4

私はPythonが初めてです。同じキーを共有するが、キーの値が異なる 2 つの辞書があります。各キーの値の数値の違いを得るために、2 つの辞書を比較したいと思います。例えば:

dict1 = {'hi' : 45, 'thanks' : 34, 'please' : 60}

dict2 = {'hi' : 40, 'thanks' : 46, 'please' : 50}

言い換えれば、これら 2 つの辞書内の値の数値の差を示す 3 番目の辞書またはペアのリストを受け取りたいと思います (つまり、dict1 の値を dict2 から減算します (またはその逆)。したがって、次のようなものになります)。これ:

dict_difference = {'hi' : 5 , 'thanks' : -12, 'please' : 10}

次の方法で、ある辞書から別の辞書を減算することを知っています。

dict1 = Counter({'hi' = 45, 'thanks' = 34, 'please' = 60})

dict2 = Counter({'hi' = 40, 'thanks' = 46, 'please' = 50})

dict3 = dict1-dict2 # は正の値のみを返すため、次のようになります。

dict3 = {'hi'= 5, 'please' = 10} # これは私が望むものではありません。

また、辞書をペアのリストに変換することも考えました(これが呼び出される方法だと思います):

dictlist = []
for key, value in dict1.iteritems():`

     temp = (key, value)
     dictlist.append(temp)

したがって

print dictlist     #gives: 

[('hi', 45),('thanks' = 34), ('please' = 60)]

したがって、辞書をペアのリストに変換し、それを key:value の形式でキー = 値にすることができれば、subtract() メソッドを適用して、目的を達成できると考えました。欲しいです。

https://docs.python.org/2/library/collections.htmldef __repr__(self)に示されているようにそれを達成することを考えましたが、遠くまで行きませんでした。

どんな助けにも感謝します。可能であれば、コードの説明を残してください。私のアプローチが間違っていて、ある辞書の値を別の辞書から差し引く簡単な方法がある場合は、それも共有してください。

4

2 に答える 2

10

まず、辞書の形式が正しくありません (:および正しくありません=):

dict1 = {'hi':45, 'thanks':34, 'please':60}
dict2 = {'hi':40, 'thanks':46, 'please':50}

辞書内包表記を使用できます。基本的に、1 つのディクショナリをループし、キーが 2 番目のディクショナリにもあることを確認し、値の差を出力ディクショナリに挿入します。すべて一行で。

dic = {key: dict1[key]-dict2[key] for key in dict1 if key in dict2}
于 2015-03-25T21:19:41.730 に答える
3

辞書のキーの使用について考えたあなたは正しい道を歩んでいました。

ここでは、最初のディクショナリのキーを調べて、それらがディクショナリ 2 にあるかどうかを確認します。次に、dictionary2 で同じことを行い、dictionary1 のキーをチェックしますが、キーがまだ結果の辞書にないことを確認して、重複した減算を行わないようにします。

dict1 = {'hi': 45, 'thanks': 34, 'please': 60}
dict2 = {'hi': 40, 'thanks': 46, 'please': 50}
result = {}

for key in dict1.keys():
    if key in dict2:
    result[key] = dict1[key] - dict2[key]

for key in dict2.keys():
    if key in dict1 and not key in result:
    result[key] = dict1[key] - dict2[key]
于 2015-03-25T21:20:44.760 に答える