如何检查一个字典中是否存在一个值(python)

我在Python中有以下字典:

d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'} 

我需要一种方法来查找这个字典中是否存在诸如“one”或“two”之类的值。

例如,如果我想知道索引“1”是否存在,我只需键入:

 "1" in d 

然后,python会告诉我,如果这是真或假,但是我需要做同样的事情,除了find一个值是否存在。

 >>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'} >>> 'one' in d.values() True 

出于好奇,有些比较时机:

 >>> T(lambda : 'one' in d.itervalues()).repeat() [0.28107285499572754, 0.29107213020324707, 0.27941107749938965] >>> T(lambda : 'one' in d.values()).repeat() [0.38303399085998535, 0.37257885932922363, 0.37096405029296875] >>> T(lambda : 'one' in d.viewvalues()).repeat() [0.32004380226135254, 0.31716084480285645, 0.3171098232269287] 

编辑:如果你想知道为什么…原因是,上述每个返回不同types的对象,这可能或可能不适合查找操作:

 >>> type(d.viewvalues()) <type 'dict_values'> >>> type(d.values()) <type 'list'> >>> type(d.itervalues()) <type 'dictionary-valueiterator'> 

编辑2:按照评论中的要求…

 >>> T(lambda : 'four' in d.itervalues()).repeat() [0.41178202629089355, 0.3959040641784668, 0.3970959186553955] >>> T(lambda : 'four' in d.values()).repeat() [0.4631338119506836, 0.43541407585144043, 0.4359898567199707] >>> T(lambda : 'four' in d.viewvalues()).repeat() [0.43414998054504395, 0.4213531017303467, 0.41684913635253906] 

您可以使用

 "one" in d.itervalues() 

testing你的字典中是否有"one"之一。

使用字典视图:

 if x in d.viewvalues(): dosomething().. 

Python字典已经得到(关键)function

 >>> d.get(key) 

例如,

 >>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'} >>> d.get('3') 'three' >>> d.get('10') none 

如果你的钥匙不存在,将不会返回none值。

 foo = d[key] # raise error if key doesn't exist foo = d.get(key) # return none if key doesn't exist 

与小于3.0和大于5.0的版本相关的内容。 。