2009-07-25 9 views
0

リストの理解度を使用してこれを表現する良い方法はありますか?あるいはこれを一行で表現する他の方法はありますか?条件付きで辞書の値を置き換えるための1つのライナー

元の辞書の各値をcol辞書の対応する値に置き換えるか、col辞書にない場合はそのままにします。

col = {'1':3.5, '6':4.7} 
original = {'1':3, '2':1, '3':5, '4':2, '5':3, '6':4} 
for entry in col.iteritems(): 
    original[entry[0]] = entry[1] 
+0

このコードスニペットはそのまま実行されません。ファイルに貼り付けて変更せずに実行できるコードスニペットを提供してください。そうすれば、自分が行っていることを簡単に確認できます。 –

+0

@グレン:私はそれに何の問題もなかった。構文エラーはなく、私はOPが望んだと思ったことをしました。オリジナルの値が更新されました。なぜそれが失敗したはずだと思いますか? – hughdbrown

答えて

2

私はupdateがあなたの望むものだと信じています。

更新([その他])

更新他、上書き既存のキーからキー/値のペアを持つ辞書。 戻り値なし。

コード:

original.update(col[user]) 

簡単なテスト:

user = "user" 

matrix = { 
    "user" : { 
     "a" : "b", 
     "c" : "d", 
     "e" : "f", 
    }, 
} 

col = { 
    "user" : { 
     "a" : "b_2", 
     "c" : "d_2", 
    }, 
} 

original.update(col[user]) 

print(original) 

出力

{'a': 'b_2', 'c': 'd_2', 'e': 'f'} 
+0

素晴らしい!私はちょうど別の便利なショートカットを学んだ。 – Pavel

+0

質問は、 "元の辞書の各値をcol辞書の対応する値に置き換えたい、col辞書にない場合はそのままにしたい"と言う。この声明の後半に違反しないでしょうか? –

+0

ああ、心配しないで。私は間違って質問を読んだと思う... 'col'は更新するための辞書であり、更新される辞書ではない。 –

関連する問題