我有蟒蛇以下字典:如何检查是否在字典(蟒蛇)存在的值
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
我需要一种方法来找到一个值,如“一”或“二”的存在在这本词典里。
例如,如果我想知道如果索引“1”的存在我只需要键入:
"1" in d
然后蟒蛇会告诉我,如果这是真的还是假的,但是我需要除了找到一个值是否存在之外,还要做同样的事情。
我有蟒蛇以下字典:如何检查是否在字典(蟒蛇)存在的值
d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
我需要一种方法来找到一个值,如“一”或“二”的存在在这本词典里。
例如,如果我想知道如果索引“1”的存在我只需要键入:
"1" in d
然后蟒蛇会告诉我,如果这是真的还是假的,但是我需要除了找到一个值是否存在之外,还要做同样的事情。
>>> 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]
编辑:而在你不知道的情况下...的原因是,上述每个返回不同类型的对象,其可以或可以不被很好适合于查找操作:
>>> type(d.viewvalues())
<type 'dict_values'>
>>> type(d.values())
<type 'list'>
>>> type(d.itervalues())
<type 'dictionary-valueiterator'>
EDIT2:根据要求在评论...
>>> 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()
来测试是否"one"
是你的字典的值之间。
@SvenMaramach很显然,它看起来值,但你会怎么看钥匙?它可以应用于键吗? – cbbcbail
@cbbcbail:为了测试'd'的键是否出现''one'',只需在d'中使用''one''。 –
如何检查某个键是否包含值? (为了避免重复) – jester112358
使用字典视图:
if x in d.viewvalues():
dosomething()..
Python字典有get(key) funcion
>>> d.get(key)
例如,
>>> d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}
>>> d.get('3')
'three'
>>> d.get('10')
none
如果你的关键是nt存在,将返回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的版本。 。
不回答问题。 OP询问'key:value'中的值,而不是key。 – akshaynagpal
我手头没有python,你可以用'four'而不是'one'重新运行测试吗? – soulcheck
@soulcheck - 检查我的第二个编辑! :0 – mac
毕竟它并不是必须的,除非在更大的字典上运行。我猜在values()中的开销是由复制值列表引起的,而viewvalues()是通过维持活动视图引起的。 – soulcheck