问题描述
我最近写了一些看起来像这样的代码:
I recently wrote some code that looked something like this:
# dct is a dictionary
if "key" in dct.keys():
但是,后来我发现我可以通过以下方式获得相同的结果:
However, I later found that I could achieve the same results with:
if "key" in dct:
这个发现让我开始思考,我开始进行一些测试,看看是否有一种情况,当我必须使用字典的keys
方法时.但是我的结论是,没有.
This discovery got me thinking and I began to run some tests to see if there could be a scenario when I must use the keys
method of a dictionary. My conclusion however is no, there is not.
如果我想要列表中的键,我可以这样做:
If I want the keys in a list, I can do:
keys_list = list(dct)
如果要遍历键,可以执行以下操作:
If I want to iterate over the keys, I can do:
for key in dct:
...
最后,如果我想测试键是否在dct
中,可以像上面一样使用in
.
Lastly, if I want to test if a key is in dct
, I can use in
as I did above.
总结起来,我的问题是:我错过了什么吗?可能存在我必须使用keys
方法的情况吗?...还是仅仅是早期Python安装中的遗留方法应该被忽略?
Summed up, my question is: am I missing something? Could there ever be a scenario where I must use the keys
method?...or is it simply a leftover method from an earlier installation of Python that should be ignored?
推荐答案
在Python 3上,使用dct.keys()
获取 字典视图对象 ,它使您可以仅对按键进行设置操作:
On Python 3, use dct.keys()
to get a dictionary view object, which lets you do set operations on just the keys:
>>> for sharedkey in dct1.keys() & dct2.keys(): # intersection of two dictionaries
... print(dct1[sharedkey], dct2[sharedkey])
在Python 2.7中,您将为此使用dct.viewkeys()
.
In Python 2.7, you'd use dct.viewkeys()
for that.
在Python 2中,dct.keys()
返回一个列表,即字典中键的副本.可以将其传递给一个单独的对象,该对象可以单独操作,包括在不影响字典本身的情况下删除元素;但是,您可以使用list(dct)
创建相同的列表,该列表在Python 2和3中均可使用.
In Python 2, dct.keys()
returns a list, a copy of the keys in the dictionary. This can be passed around an a separate object that can be manipulated in its own right, including removing elements without affecting the dictionary itself; however, you can create the same list with list(dct)
, which works in both Python 2 and 3.
您确实不希望其中任何一个用于迭代或成员资格测试;始终分别使用for key in dct
和key in dct
.
You indeed don't want any of these for iteration or membership testing; always use for key in dct
and key in dct
for those, respectively.
这篇关于为什么要使用dict.keys?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!