如何在键计数不同的情况下合并字典值

2024-04-23 09:21:29 发布

您现在位置:Python中文网/ 问答频道 /正文

我很难合并字典的值,而字典的键计数却不同

我发现了一个使用两个列表的工作示例,例如

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()))

Tags: 方法output字典动态k2k1ziplist
1条回答
网友
1楼 · 发布于 2024-04-23 09:21:29

如果您的第二段代码准确地表示了您要对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()已经返回了一个列表。*运算符有时被称为'splat'运算符,当这样使用时表示解压参数。你知道吗

之所以使用列表而不是字典,是因为“splat”运算符不能保证解压的顺序超出“所讨论的类型在对其进行迭代时使用的任何顺序”。如果选择键以强制执行正确的顺序,则有序字典可能会起作用。你知道吗

相关问题 更多 >