所以我花了几个小时来研究这个问题,并在Stackoverflow上搜索了许多类似的问题,以寻求答案,但毫无疑问。这似乎很简单,但我似乎无法得到想要的结果。我有一个字典列表A,我想和另一个字典列表B合并。A和B的长度相同。我想要一个同样长度的字典C的结果列表,以便B中的键:值对被附加到a中现有的键:值对。下面是一个实现所需结果的示例和失败尝试
A = [{'a':1, 'b':2, 'c':3},{'a':4, 'b':5, 'c':6},{'a':7, 'b':8, 'c':9}]
B = [{'d':10},{'d':11},{'d':12}]
for a in A:
for b in B:
C = a.update(b)
print(C)
//Actual output: None
//Desired output: [{'a':1, 'b':2, 'c':3, 'd':10},{'a':4, 'b':5, 'c':6, 'd':11},{'a':7, 'b':8, 'c':9, 'd':12}]
在理论上,我觉得上面的代码应该可以工作,但事实并非如此。任何帮助都将不胜感激
谢谢, 亚伦
其他答案侧重于提供做事情的方法,但是这个答案将回顾为什么您给定的代码没有按照您想要的方式工作
打印
None
,因为update
函数总是返回None
,所以在语句之后C = a.update(b)
您已将
C
的值设置为None
!update
的要点是就地更新给定的dict,而不返回任何内容另一个问题是,您正在为
A
的每个元素循环B
的所有元素,这将产生为A
的每个元素调用update
三次的效果。不是我们想要的正如@tevemadar在他们出色的回答中所说的,实现您想要的最快的方法是使用
zip
函数这是一个使用
zip
同时迭代两个列表,然后从原始列表创建新词典的选项:使用Python3.9,您应该能够使用
|
(请参见PEP584或doc)实现这一点:满足
zip
,它并行地迭代多个列表:相关问题 更多 >
编程相关推荐