ここでアイデアはありません。 私が持っている:他の2つの辞書(d1、d2)に固有の項目で構成される辞書(d3)を作成します。
d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
私が作成したいと思います:
d3 = {4:70, 5:80, 6:90}
私は、これが故に、私のフラストレーションがどのように些細な実現しています。アイデアがあれば、共有してください。
ここでアイデアはありません。 私が持っている:他の2つの辞書(d1、d2)に固有の項目で構成される辞書(d3)を作成します。
d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
私が作成したいと思います:
d3 = {4:70, 5:80, 6:90}
私は、これが故に、私のフラストレーションがどのように些細な実現しています。アイデアがあれば、共有してください。
対称的な差異^
は、固有のキーを検出します。それでは簡単なディクテーションです:
>>> {k: d1.get(k, d2.get(k)) for k in (set(d1)^set(d2))}
{4: 70, 5: 80, 6: 90}
上記の方法は相互互換コードです。それはあなたがPythonの2に対処する必要がない場合は少し立派になります
>>> from collections import ChainMap
>>> d12 = ChainMap(d1, d2)
>>> {k: d12[k] for k in d1.keys()^d2.keys()}
{4: 70, 5: 80, 6: 90}
注:ここでは、キー「ビュー」オブジェクトはメソッドd.viewkeys()
の下でも、Pythonの2でご利用いただけます。
'set(d1)^ set(d2)'で2つの新しいセットを作るのではなく、 'd1.keys()^ d2.keys()'を使うこともできます。 –
@ajcr、 'dict.keys'はPython 2.xでリストを返します。 'list^list'はサポートされていません。 – falsetru
@wimありがとう!これはまさに私が達成したかったものです –
def dictJoin(d1, d2):
return {k: d1[k] if k in d1 else d2[k] for k in set(d1)^set(d2)}
d1 = {1:30, 2:20, 3:30, 5:80}
d2 = {1:40, 2:50, 3:60, 4:70, 6:90}
if __name__ == '__main__':
d3 = dictJoin(d1, d2)
print d3
これに辞書の理解を使用することができます。 –
'dictJoin'は素晴らしい名前ではありませんが、そうでなければ良いアイデアです。 – wim
@mrkaran:あなたは説明していません。これは差異辞書です。 –
@Willem Van Onsemああ、私はそれを実現しました! – mkaran
@BillalBEGUERADJ:質問は、宿題をやりたい怠け者の学生か、本当の(そして特定の)問題を持つ人のように見えるかどうかによって異なります。いくつかの質問は、 "**タスク1 **:" ... –