是否有一种智能的pythonic方法来检查dict中是否有项目(键,值)?
a={'a':1,'b':2,'c':3} b={'a':1} c={'a':2} b in a: --> True c in a: --> False
Bhargav Rao.. 19
使用的短路属性and
.这样,如果左手是假的,那么你将不会KeyError
检查一下这个值.
>>> a={'a':1,'b':2,'c':3} >>> key,value = 'c',3 # Key and value present >>> key in a and value == a[key] True >>> key,value = 'b',3 # value absent >>> key in a and value == a[key] False >>> key,value = 'z',3 # Key absent >>> key in a and value == a[key] False
@GingerPlusPlus:在你调用它之前,使用`get`进行额外的查找只是为了找到`get`方法. (4认同)
@GingerPlusPlus,因为它更快 (3认同)
@GingerPlusPlus:当'None`是有效的dict值时,它可以省去使用显式标记值的麻烦.另外,查找`get`无论如何都是dict查找. (3认同)
user2357112 .. 7
你已经标记了这个2.7,而不是2.x,所以你可以检查元组是否在dict中viewitems
:
(key, value) in d.viewitems()
在引擎盖下,这基本上做到了key in d and d[key] == value
.
在Python 3中,viewitems
只是items
,但不要items
在Python 2中使用!那将构建一个列表并进行线性搜索,花费O(n)时间和空间来进行快速O(1)检查.
使用的短路属性and
.这样,如果左手是假的,那么你将不会KeyError
检查一下这个值.
>>> a={'a':1,'b':2,'c':3} >>> key,value = 'c',3 # Key and value present >>> key in a and value == a[key] True >>> key,value = 'b',3 # value absent >>> key in a and value == a[key] False >>> key,value = 'z',3 # Key absent >>> key in a and value == a[key] False
你已经标记了这个2.7,而不是2.x,所以你可以检查元组是否在dict中viewitems
:
(key, value) in d.viewitems()
在引擎盖下,这基本上做到了key in d and d[key] == value
.
在Python 3中,viewitems
只是items
,但不要items
在Python 2中使用!那将构建一个列表并进行线性搜索,花费O(n)时间和空间来进行快速O(1)检查.