當改寫說我們有2個字典第一個是使用openpyxl從一個文件名爲excel2013.xlsx和excel2014.xlsx第二個提取:合併字典
d1={'nume': 'Barta', 'cifra afaceri': 200, 'cifra2': 24}
d2={'nume': 'Barta', 'cifra afaceri': 190, 'cifra3': 21}
這些字典都是清單的一部分字典。
lista=[{'nume': 'Barta', 'cifra afaceri': 200, 'cifra2': 24},{'nume': 'Barta', 'cifra afaceri': 190, 'cifra3': 21}]
首先,我想要做的是去了這個名單,並找到基於一個鍵複製,在這種情況下,關鍵「nume」。從這些副本中,我需要獲取包含d1和d2所有密鑰的新字典。我的解決方法是這樣的:
import os
import itertools
ultima_lista=[]
ultima=[]
for a, b in itertools.combinations(lista,2):
if a['nume'] == b['nume']:
z=dict(list(a.items())+ list(b.items()))
ultima_lista.append(z)
print(*ultima_lista, sep='\n')
print('------------------------------------------------------------------------------------------------------')
for a in lista:
for b in ultima_lista:
if a['nume'] == b['nume']:
ultima.append(a)
print (*ultima, sep='\n')
print('------------------------------------------------------------------------------------------------------')
for i in ultima_lista:
lista.append(i)
for i in ultima:
lista.remove(i)
print(*lista, sep='\n')
現在這個解決方案是爲了一個更大的列表,我們在這裏只有2個字典。然而,使用這種方法,我無法控制數據被覆蓋的密鑰'cifra afaceri' - 哪些數據保留,來自dict1或dict2。在這個例子中我需要的最新信息,這是excel2014是在頂部,這意味着我需要的輸出應該是:
lista=[{'nume': 'Barta', 'cifra afaceri': 190, 'cifra2': 24,'cifra3': 21 }
我想再拍字典中的鍵是「LISTA元素'和值是從文件名提取的年份。想法?| Thx
歡迎來到Stacko verflow!在發佈問題後,請花點時間仔細閱讀:您忘記使用正確的語法來格式化您的代碼,因此您的帖子看起來像一團糟。有人不得不爲你編輯它,如果他們不需要,因爲你按照發布說明=) –
我覺得我不理解。你想要的只是'd1.update(d2)'? – Batman
@Batman在這個例子中,它會工作,但想象你有10個字典具有相同的'密'鍵。也許最新的並沒有其他人擁有的所有鑰匙。 – Mike