如果我有两个不同的词典,我是从不同大小的查询中创建的
dictionary1:
{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}
dictionary2:
{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}
最初,我从这两个词典中创建了一个主列表:
List = []
for i in dictionary1:
for j in dictionary2:
if i['id'] = j['id]:
List.append[i['id'],i['passCount'],j['failCount']]
else:
List.append[i['id'],i['passCount'],0]
List.append[j['id'],0, j['failCount']
return List
当我打印此列表以获取我的数据时,我只会获得匹配的ID列表,而不会考虑其他ID。
出于这个原因,我想打印一本字典,我可以在那里打印
{'id' = 1, 'passCount' = 3, 'failCount' = 1}, {'id': 2 , 'passCount': 4, 'failCount' = 0}...
等等,不删除任何ID
由于
答案 0 :(得分:0)
也许他们是两个不同的列表,而不是字典,所以我假设它们是两个列表:
failCount
默认设置为0,您可以尝试:
a=[{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}]
b=[{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}]
for j in a:
j.update({'failCount': 0})
for i in b:
if i["id"]==j["id"]:
j.update(i)
print(a)
输出:
[{'id': 1, 'passCount': 3, 'failCount': 1}, {'id': 2, 'passCount': 4, 'failCount': 0}, {'id': 5, 'passCount': 7, 'failCount': 3}, {'id': 6, 'passCount': 3, 'failCount': 0}]
答案 1 :(得分:0)
使用dict.setdefault和dict.update方法的简短解决方案:
l1 = [{'id': 1 , 'passCount': 3}, {'id': 2 , 'passCount': 4}, {'id': 5 , 'passCount': 7}, {'id': 6, 'passCount': 3}]
l2 = [{'id': 1 , 'failCount': 1}, {'id': 3 , 'failCount': 2}, {'id': 5 , 'failCount': 3}]
grouped = {}
for d in l1+l2:
grouped.setdefault(d['id'], {'failCount':0, 'passCount': 0}).update(d)
result = [d for d in grouped.values()]
print(result)
输出:
[{'passCount': 3, 'id': 1, 'failCount': 1}, {'passCount': 4, 'id': 2, 'failCount': 0}, {'passCount': 0, 'id': 3, 'failCount': 2}, {'passCount': 7, 'id': 5, 'failCount': 3}, {'passCount': 3, 'id': 6, 'failCount': 0}]