2

次のように、キーと値のペアを持つ2つの辞書があります。

dict-1  ch:23, 100
        ch:24, 95

dict-2  Ch:23, 98
        ch:25, 100

すべてのキーが両方のディクショナリに存在するわけではなく、各ディクショナリには約200,000のキーと値のペアが含まれています。私がやりたいのは、これら2つを比較または組み合わせて、出力テキストファイルを生成することです。これにより、キーが両方の辞書にある場合、次のような出力ファイル形式で両方の値を取得できます。

ch:23   100   98         
ch:24   95    .    
Ch:25   .     100

これどうやってするの?

4

1 に答える 1

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)

順序を保持したい場合は、最初に順序付けられた辞書として元の辞書を作成する必要があります

その後、あなたはとして行うことができます

>>> 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])])
>>> 
于 2012-04-30T17:42:07.903 に答える