0

以下の辞書では、aaの値がbbの値と一致するかどうかを確認し、aaのキーからbbのキーへのマッピングを作成します。辞書を並べ替える必要がありますか?タブ区切りのファイルからデータをインポートするので、辞書に接続されていません。aaはbbの約100倍(aaの場合は100k行)ですが、これはまれにオフラインで実行されることに注意してください。

入力:

aa = {1: 'a', 3: 'c', 2 : 'b', 4 : 'd'}
bb = {'apple': 'a', 'pear': 'b', 'mango' : 'g'}

必要な出力(または同様のデータ構造):

dd = {1 : 'apple', 2 : 'pear'}
4

2 に答える 2

3
aa = {1:'a', 3:'c', 2:'b', 4:'d'}
bb = {'apple':'a', 'pear':'b', 'mango': 'g'}

bb_rev = dict((value, key)
    for key, value in bb.iteritems()) # bb.items() in python3
dd = dict((key, bb_rev[value])
    for key, value in aa.iteritems() # aa.items() in python3
    if value in bb_rev)

print dd
于 2012-06-06T06:58:09.357 に答える
0

あなたはこのようなことをすることができます:

>>> aa = {1: 'a', 3: 'c', 2 : 'b', 4 : 'd'}
>>> bb = {'apple': 'a', 'pear': 'b', 'mango' : 'g'}
>>> tmp = {v: k for k, v in bb.iteritems()}
>>> dd = {k: tmp[v] for k, v in aa.iteritems() if v in tmp} 
 >>> dd
{1: 'apple', 2: 'pear'}

ただし、これは、ディクショナリの各値がaaディクショナリの値として bb1回だけ表示されるか、まったく表示されない場合にのみ機能することに注意してください。

于 2012-06-06T06:54:30.733 に答える