比较/组合两个词典

时间:2012-04-30 17:31:54

标签: python dictionary python-2.7

我有两个带键值对的词典,如下所示:

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

我该怎么做?

1 个答案:

答案 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])])
>>>