Python:如何知道两个字典是否具有相同的键

use*_*652 12 python dictionary

dic1 = {'a':'a','b':'c','c':'d'}
dic2 = {'b':'a','a':'c','c':'d'}

dic1.keys()    =>['a', 'b', 'c']
dic2.keys()    =>['b', 'a', 'c']
Run Code Online (Sandbox Code Playgroud)

dic1和dic2具有相同的键,但顺序不同.

如何判断他们有相同的密钥(不考虑订单)?

kev*_*pie 28

python 2.7

dict views: 支持直接设置操作等.

>>> dic1 = {'a':'a','b':'c','c':'d'}
>>> dic2 = {'b':'a','a':'c','c':'d'}
>>> dic1.viewkeys() == dic2.viewkeys()
True
>>> dic1.viewkeys() - dic2.viewkeys()
set([])
>>> dic1.viewkeys() | dic2.viewkeys()
set(['a', 'c', 'b'])
Run Code Online (Sandbox Code Playgroud)

同样在3.x :( thx @lennart)

>>> dic1 = {'a':'a','b':'c','c':'d'}
>>> dic2 = {'b':'a','a':'c','c':'d'}
>>> dic1.keys() == dic2.keys()
True
>>> dic1.keys() - dic2
set()
>>> dic1.keys() | dic2
{'a', 'c', 'b'}
Run Code Online (Sandbox Code Playgroud)

python 2.4+

set操作:直接迭代dict键到一个集合

>>> dic1 = {'a':'a','b':'c','c':'d'}
>>> dic2 = {'b':'a','a':'c','c':'d'}
>>> set(dic1) == set(dic2)
True
Run Code Online (Sandbox Code Playgroud)

  • 它在Python 3中被称为"keys()". (2认同)

gru*_*czy 11

set(dic1.keys()) == set(dic2.keys())
Run Code Online (Sandbox Code Playgroud)

  • @Summer:根据dict的定义,dict的键不能包含重复的元素. (2认同)