繁体   English   中英

Python34:使用字典推导将值复制到一个字典列表到另一个列表

[英]Python34: Using Dictionary Comprehension to Copy Values form one list of dictionaries to another

我正在编写一个脚本来处理数据,所以我有一个包含带有计算值的字典的列表。 一旦我计算了新的字典,我想在适当的字典后面附加新的条目。

我知道我可以使用list或np数组来做到这一点,但是我想学习如何使用字典。 我也刚开始使用列表理解,因此我想对如何正确使用它有更好的了解。 因此,让生活变得艰难。

这是简化的示例。

我计算值并将其放在字典中,然后将其放入列表中以与每个条目相对应。

A=[{'low':1},{'low':2}]
print(A)
[{'low': 1}, {'low': 2}]   # entry 0 corresponds to sample 1 and the next to sample 2

B=[{'hi':1},{'hi':2}]
print(B)
[{'hi': 1}, {'hi': 2}]   # entry 0 corresponds to sample 1 and the next to sample 2

C=[{}]*len(A)   # initialize list to contain a dictionary for each sample. Each dictionary will receive the corresponding values copied from A and B
print(C)
[{}, {}]

现在我尝试使用字典理解

{C[x].update(A[x]) for x in range(len(A))}
print(C)
[{'low': 2}, {'low': 2}]

结果不是我预期的。 我想要这样的东西:

[{'low':1,'high':1},{'low':1,'high':1}]

我在这里不明白什么...

谢谢

术语C=[{}]*len(A)创建len(A)条目的列表,这些条目都是同一词典。 C[0]更改还将更改C[1]因为两者相同。

使用C = [ {} for _ in A ]创建一个新字典作为列表的每个元素。

但是总的来说,正如我在上面的评论中提到的那样,我将考虑将新词典追加到现有列表中; 听起来最像您原本的意图。

您需要同时使用AB来更新C 这是一种可能的解决方案。

A=[{'low':1},{'low':2}]
B=[{'hi':1},{'hi':2}]

C = [dict(a.items() + b.items()) for a,b in zip(A, B)]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM