[英]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 ]
創建一個新字典作為列表的每個元素。
但是總的來說,正如我在上面的評論中提到的那樣,我將考慮將新詞典追加到現有列表中; 聽起來最像您原本的意圖。
您需要同時使用A
和B
來更新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.