当改写说我们有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