检查Python字典中的特定键

vgo*_*ani 6 python

有几种不同的方法可以检查Python字典是否包含特定的键,即

d = {}

if key in d:

if d.contains(key):

if d.has_key(key):
Run Code Online (Sandbox Code Playgroud)

一种语言允许你以几种不同的方式做同样的事情是愚蠢的,除非每种方法都做了完全不同的事情.有人可以请对比上面的三种技术,它们有何不同?

Ros*_*son 12

它们都是一样的,并且由于历史原因它们都在附近,但是你应该使用它们 key in d.


DNS*_*DNS 7

方法#1是可接受的方法.方法#2实际上并不存在,至少在我所知道的任何Python版本中都存在; 我有兴趣看看你发现了什么.方法#3曾经是可接受的方式,但现在弃用.

所以真的只有一种方式.

  • 只是为了回答这个答案...如果他*想到`__contains__` - 答案是它是一个特殊的方法,用于实现`b in a ... ... vm翻译a`参考文献中的'b'调用`a .__ contains __(b)`后面的场景,很像`a [b]`被翻译成`a .__ getitem __(b)`.特殊的`__xxx__`方法是python如何提供基于方法的干净实现语言公开提供的所有语法糖. (4认同)

ovg*_*vin 5

d.__contains__(key)是什么用它key in d(因为in运算符调用__contains__字典的方法)

has_key 不推荐使用,并且与之相同 __contains__