我很难合并字典的值,而字典的键计数却不同
我发现了一个使用两个列表的工作示例,例如
t1 = [1,2,3]
t2 = ["a","b","c"]
output = list(zip(t1, t2))
导致[(1, 'a'), (2, 'b'), (3, 'c')]
。。。第一次成功。你知道吗
但是我需要压缩字典中的所有值,这在键值的计数上是不同的。(有时有2把钥匙,有时有4把钥匙,以此类推……)
有没有一种方法可以通过动态输入来实现zip,这取决于按键的数量
让我们说
t1 = [1,2,3]
t2 = ["a","b","c"]
generated_rows = OrderedDict()
generated_rows['t1'] = t1
generated_rows['t2']=t2
output = list(zip(??*))
预期产出如下:
[(1, 'a'), (2, 'b'), (3, 'c')]
但是zip方法的参数应该以一种动态的方式来自字典。下列不同的格言应适用于该方法:
d1 = {'k1':[0,1,2], 'k2':['a','b','c']}
d2 = {'k1':[0,1,2], 'k2':['a','b','c'], 'k3':['x','y','z']}
d3 = ...
解决方案(感谢Todd):
d1 = {'k1':[0,1,2], 'k2':['a','b','c']}
o = list(zip(*d1.values()))
如果您的第二段代码准确地表示了您要对N个不同的列表执行的操作,那么代码可能是:
您不需要额外的
list()
,因为zip()
已经返回了一个列表。*
运算符有时被称为'splat'运算符,当这样使用时表示解压参数。你知道吗之所以使用列表而不是字典,是因为“splat”运算符不能保证解压的顺序超出“所讨论的类型在对其进行迭代时使用的任何顺序”。如果选择键以强制执行正确的顺序,则有序字典可能会起作用。你知道吗
相关问题 更多 >
编程相关推荐