c00*_*ter 24 python dictionary
例如,假设我必须使用词典:
d_1 = {'peter': 1, 'adam': 2, 'david': 3}
Run Code Online (Sandbox Code Playgroud)
和
d_2 = {'peter': 14, 'adam': 44, 'david': 33, 'alan': 21}
Run Code Online (Sandbox Code Playgroud)
检查这两个词典是否包含相同的键集是最聪明的方法是什么?在上面的示例中,它应该返回,False因为d_2包含'alan'键,而d_1不是.请注意,我不想检查每个键的关联值是否相同,只是一组键是相同的.
Joh*_*ooy 30
在Python2中,
set(d_1) == set(d_2)
Run Code Online (Sandbox Code Playgroud)
在Python3中,您可以执行此操作,这可能比创建集更有效
d1.keys() == d2.keys()
Run Code Online (Sandbox Code Playgroud)
虽然Python2方式也可以
xor*_*yst 27
您可以使用dict.keys()获取字典的键.
您可以将其转换为set(dict.keys())
您可以将集与==进行比较
总结一下:
set(d_1.keys()) == set(d_2.keys())
Run Code Online (Sandbox Code Playgroud)
会给你你想要的.
在 Python 3 中,dict.keys()返回一个可以像集合一样使用的“视图对象”。这比构建一个单独的集合要高效得多。
d_1.keys() == d_2.keys()
Run Code Online (Sandbox Code Playgroud)在 Python 2.7 中,dict.viewkeys()做同样的事情。
d_1.viewkeys() == d_2.viewkeys()
Run Code Online (Sandbox Code Playgroud)在 Python 2.6 及以下版本中,您必须为每个字典构造一组键。
set(d_1) == set(d_2)
Run Code Online (Sandbox Code Playgroud)
或者您可以自己迭代键以获得更高的内存效率。
len(d_1) == len(d_2) and all(k in d_2 for k in d_1)
Run Code Online (Sandbox Code Playgroud)