は、私は2つの辞書1つの辞書の鍵が他の辞書の値と等しい場合、2つの辞書をマージする最速の方法はありますか?
dict1 = {(1,1,1) : ('abc'), (2,2,2) : ('def')}
dict2 = {('abc') : (1,2,3), ('def') : (4,5,6)}
があると3等
dict3 = {(1,1,1):(1,2,3), (2,2,2):(4,5,6)}
という辞書を生成するための最速の方法は何ですか?
は、私は2つの辞書1つの辞書の鍵が他の辞書の値と等しい場合、2つの辞書をマージする最速の方法はありますか?
dict1 = {(1,1,1) : ('abc'), (2,2,2) : ('def')}
dict2 = {('abc') : (1,2,3), ('def') : (4,5,6)}
があると3等
dict3 = {(1,1,1):(1,2,3), (2,2,2):(4,5,6)}
という辞書を生成するための最速の方法は何ですか?
あなたは辞書内包表記を使用することができます。この繰り返し処理は、キーとしてdict1
から対応する値を使用してキーdict1
のと、上
dict1 = {(1,1,1) : ('abc'), (2,2,2) : ('def')}
dict2 = {('abc') : (1,2,3), ('def') : (4,5,6)}
dict3 = {k: dict2[dict1[k]] for k in dict1}
>>> print dict3
{(2, 2, 2): (4, 5, 6), (1, 1, 1): (1, 2, 3)}
を、dict2
で値を検索します。 dict1
のキーとdict2
の値が結合され、新しい辞書が作成されます。
Python 2では、dict1.items()
を使用すると少し速くなります。一時的なリストが作成されるためです。同様に、dict1.iteritems()
を反復すると、作成する必要のある反復子が返されますが、無視されます。辞書のキーを直接反復することも、最小限のオーバーヘッドを招く。
'k:dict1.items()}'の 'k:dict2 [v]を試しましたか?かなり速くなければならない。 – vaultah
うわー、それは本当に速いです!簡潔で正確なコードをありがとう! – kwotsin
@vaultah答えが必要です。 – Alex