我无法合并字典的值,而字典的密钥数不同
我找到了一个使用两个列表的工作示例,例如
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方法的参数应该以某种方式以动态的方式来自字典。以下变量dicts应该与该方法一起使用:
d1 = {'k1':[0,1,2], 'k2':['a','b','c']}
d2 = {'k1':[0,1,2], 'k2':['a','b','c'], 'k3':['x','y','z']}
d3 = ...
解决方案(感谢托德):
d1 = {'k1':[0,1,2], 'k2':['a','b','c']}
o = list(zip(*d1.values()))
答案 0 :(得分:2)
如果你的第二段代码准确地表示你想用N个不同的列表做什么,那么代码可能是:
t1 = [ 1, 2, 3 ]
t2 = [ 'a', 'b', 'c' ]
# And so on
x = []
x.append( t1 )
x.append( t2 )
# And so on
output = zip(*x)
您不需要额外的list()
,因为zip()
已经返回了一个列表。 *
运算符有时也称为“{1}}运算符。运算符,当像这样使用时表示解包参数。
使用列表代替字典,因为' splat'运算符并不保证它在超出&#34时解包事物的顺序;在迭代它时所讨论的类型的任何顺序"。如果选择键以强制执行正确的排序,则可以使用有序字典。