6

2 つの辞書を比較して、一方の辞書に含まれていないキーのセットを見つける必要がありました。

Python setオブジェクトがサポートしていることを知っています:

set3=set1-set2

しかし、私はできません:

dict3=dict1-dict2

また:

missingKeys=dict1.keys()-dict2.keys()

(Java ではキーが Set オブジェクトであるため、最後の点には少し驚きました。) 1 つの解決策は次のとおりです。

missingKeys=set(dict1.keys())-set(dict2.keys())

これを行うためのより良い、またはより簡潔な方法はありますか?

4

4 に答える 4

15

Python 2.7:

>>> d = {1:2, 2:3, 3:4}
>>> d2 = {2:20, 3:30}
>>> set(d)-set(d2)
set([1])

Python 3.2:

>>> d = {1:2, 2:3, 3:4}
>>> d2 = {2:20, 3:30}
>>> d.keys()-d2.keys()
{1}
于 2012-04-22T23:07:51.767 に答える
4

移植可能な方法として、Python 2.7 で dict.viewkeys を使用することをお勧めします。これは Python 3.x dict.keys のバックポートであり、2to3 によって自動的に変換されます。

例:

>>> left = {1: 2, 2: 3, 3: 4}
>>> right = {2: 20, 3:30}
>>> left.viewkeys() - right.viewkeys()
set([1])
于 2013-11-18T07:47:25.930 に答える
3

多分

[x for x in dict1.keys() if x not in dict2.keys()]
于 2012-04-22T23:10:04.547 に答える