Python:如何判断两个字典是否有相同的键

14 投票
4 回答
10967 浏览
提问于 2025-04-16 09:45
dic1 = {'a':'a','b':'c','c':'d'}
dic2 = {'b':'a','a':'c','c':'d'}

dic1.keys()    =>['a', 'b', 'c']
dic2.keys()    =>['b', 'a', 'c']

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

怎么判断它们的键是一样的(不考虑顺序)呢?

4 个回答

1

我们可以使用全部

all( k in dic2 for k in dic1) and all(k in dic1 for k in dic2)
12
set(dic1.keys()) == set(dic2.keys())

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

30

python 2.7

字典视图: 支持直接进行集合操作等。

>>> 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'])

在3.x中类似: (感谢 @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'}

python 2.4+

集合操作: 可以直接遍历字典的键并转成集合。

>>> dic1 = {'a':'a','b':'c','c':'d'}
>>> dic2 = {'b':'a','a':'c','c':'d'}
>>> set(dic1) == set(dic2)
True

撰写回答