基于键值对的Python更新字典 [英] Python update dictionary based on key value pair
本文介绍了基于键值对的Python更新字典的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
这个问题是如何检查两个词典列表和相同的键,以及如何使用其他词典中的键值对更新主词典.
this question is how to check two dictionary list and for same keys and update main dictionary with key value pair from other dictionary.
main = [
{'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2},
{'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4},
]
第二
second = [
{'likes': '8625.00', 'talks': '1215.00', 'naziv': 'AKEL'},
{'likes': '2746.00', 'talks': 0, 'naziv': 'DIKO'},
]
最终输出-示例
output = [
{'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2,'likes': '8625.00', 'talks': '1215.00'}
{'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4,'likes': '2746.00', 'talks': 0},
]
有没有快速的方法可以做到这一点.我正在尝试更新一本字典,但不起作用.
Is there any fast way to do this. I was trying with update one dictionary but dont works.
for dt, k in itertools.groupby(sorted(second, key=itemgetter('naziv')), key=itemgetter('naziv')):
maindict = {'naziv': dt}
for d in k:
maindict.update(d)
main.append(maindict)
Python 2.7
Python 2.7
推荐答案
另一个可能是-
import itertools
main = [
{'country': u'CYPRUS', 'naziv': 'AKEL', 'FCI': 2},
{'country': u'CYPRUS', 'naziv': 'DIKO', 'FCI': 4},
]
second = [
{'likes': '8625.00', 'talks': '1215.00', 'naziv': 'AKEL'},
{'likes': '2746.00', 'talks': 0, 'naziv': 'DIKO'},
]
lst = sorted(itertools.chain(main,second), key=lambda x:x['naziv'])
list_c = []
for k,v in itertools.groupby(lst, key=lambda x:x['naziv']):
d = {}
for dct in v:
d.update(dct)
list_c.append(d)
print list_c
吉尔森的无表情副本"
"Shemeless copy of mgilson"
这篇关于基于键值对的Python更新字典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文