簡體   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