我有两个带键值对的词典,如下所示:
dict-1 ch:23, 100
ch:24, 95
dict-2 Ch:23, 98
ch:25, 100
并非所有键都存在于两个词典中,并且每个词典包含大约200,000个键值对。我想要做的是比较或组合这两个并生成一个输出文本文件,如果键在两个字典中,我得到两个值,输出文件格式如下:
ch:23 100 98
ch:24 95 .
Ch:25 . 100
我该怎么做?
答案 0 :(得分:4)
注意如果您使用字典(除非OrderedDict),订单将不会保留,因此您的结果的最终顺序将与示例中描述的不同
回到你的榜样 如果
>>> d1={'ch:23': 100, 'ch:24': 95}
>>> d2={'ch:23': 98 ,'ch:25': 100}
你可以试试这个
>>> d3=collections.defaultdict(list)
>>> for k,e in d1.items()+d2.items():
d3[k].append(e)
如果要保留Order,则需要在第一个实例中将原始字典创建为有序字典
然后你可以这样做
>>> d1
OrderedDict([('ch:23', 100), ('ch:24', 95)])
>>> d2
OrderedDict([('ch:23', 98), ('ch:25', 100)])
>>> d3=collections.OrderedDict()
>>> for k,e in d1.items()+d2.items():
d3.setdefault(k,[]).append(e)
>>> d3
OrderedDict([('ch:23', [100, 98]), ('ch:24', [95]), ('ch:25', [100])])
>>>