python - 为什么使用 dict.keys?

标签 python dictionary

我最近写了一些看起来像这样的代码:

# dct is a dictionary
if "key" in dct.keys():

但是,我后来发现我可以通过以下方式获得相同的结果:

if "key" in dct:

这个发现让我开始思考,我开始运行一些测试,看看是否存在我必须使用字典的 keys 方法的场景。然而我的结论是不,没有。

如果我想要列表中的键,我可以这样做:

keys_list = list(dct)

如果我想遍历键,我可以这样做:

for key in dct:
    ...

最后,如果我想测试一个键是否在 dct 中,我可以像上面那样使用 in

总结一下,我的问题是:我错过了什么吗?会不会出现我必须使用 keys 方法的情况?...或者它只是早期安装 Python 的遗留方法,应该被忽略?

最佳答案

在 Python 3 上,使用 dct.keys() 获取 dictionary view object ,它允许您只对键进行设置操作:

>>> for sharedkey in dct1.keys() & dct2.keys():  # intersection of two dictionaries
...     print(dct1[sharedkey], dct2[sharedkey])

在 Python 2.7 中,您可以使用 dct.viewkeys()

在 Python 2 中,dct.keys() 返回一个列表,即字典中键的副本。这可以围绕一个单独的对象传递,该对象可以自行操作,包括在不影响字典本身的情况下删除元素;但是,您可以使用 list(dct) 创建相同的列表,它适用于 Python 2 和 3。

您确实不希望其中任何一个用于迭代或成员测试;始终分别使用 for key in dctkey in dct 来表示它们。

关于python - 为什么使用 dict.keys?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17634177/

相关文章:

python - Vertica,描述表

python - 通过 python 强化 sshd_config

python - Sympy 复杂矩阵求逆/操作

python - 请求库在 Window 中有效,在 Linux 中超时

Java8 : Map<X, Y> 到 Map<X, Z> 使用 RxJava

c++ - 是否可以迭代按值排序的 map ?

javascript - 如何在 Javascript 中使用整数键初始化静态值的 HashMap ?

python - 如何将二进制文件转换为 Long 整数?

c# - 尝试修改字典时出现异常

python - 是否有一个特殊值不会在字典中插入键