2016-05-27 22 views
3

私はキーと値の両方を使ってマージしたい2つの辞書を持っています。最初のものは順序付けられた辞書ですが、2番目のものは通常のものです。両方のディクテーションの長さは同じです。1つの命令と1つの命令を結合するにはどうすればよいですか?

ord_dict = OrderedDict([(0, 369670), (1, 370622), (2, 267034), ...]) 
reg_dict = {0: (0, 0), 1: (0, 1), 2: (0, 2), ...} 

所望の結果は、キーがreg_dictのタプルであり、値がord_dict内の各タプルの2番目の要素である新たな辞書です。この例では

、結果は次のようになります。これを行うには

merged_dict = {(0, 0): 369679, (0, 1): 370622, (0, 2): 267034, ...} 

どのように?

あなたはdictの内包表記を使用することができます
+0

"値は各タプルの第2要素です"とは、あなたが意味する**値**は、 rderedDict '? –

+0

@AnttiHaapalaはい、正確です。 – FaCoffee

答えて

2

merged_dict = {reg_dict[k]: v for k, v in ord_dict.items()} 

これは

{(0, 0): 369670, (0, 1): 370622, (0, 2): 267034} 
1

になります、それはあなたの通常のdictだった場合、私はあなたがOrderedDictから値を盗んかどうかはわかりませんが、

merged_dict = dict([ (v, ord_dict.get(k)) for k, v in reg_dict.iteritems() ]) 
関連する問題