为了账号安全,请及时绑定邮箱和手机立即绑定

如何检查字典中是否存在值(Python)

如何检查字典中是否存在值(Python)

白衣染霜花 2019-12-13 09:10:17
我在python中有以下字典:d = {'1': 'one', '3': 'three', '2': 'two', '5': 'five', '4': 'four'}我需要一种方法来查找此字典中是否存在诸如“一个”或“两个”的值。例如,如果我想知道索引“ 1”是否存在,我只需要键入:"1" in d然后python会告诉我这是对还是错,但是我需要做同样的事情,只是要找到一个值是否存在。
查看完整描述

3 回答

?
慕的地8271018

TA贡献1796条经验 获得超4个赞

>>> 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]


查看完整回答
反对 回复 2019-12-13
?
慕尼黑的夜晚无繁华

TA贡献1864条经验 获得超6个赞

Python字典具有get(key)函数


>>> 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的版本相关的内容。。


查看完整回答
反对 回复 2019-12-13
?
蛊毒传说

TA贡献1895条经验 获得超3个赞

不同类型检查值是否存在


d = {"key1":"value1", "key2":"value2"}

"value10" in d.values() 

>> False

如果值列表怎么办


test = {'key1': ['value4', 'value5', 'value6'], 'key2': ['value9'], 'key3': ['value6']}

"value4" in [x for v in test.values() for x in v]

>>True

如果带有字符串值的值列表怎么办


test = {'key1': ['value4', 'value5', 'value6'], 'key2': ['value9'], 'key3': ['value6'], 'key5':'value10'}

values = test.values()

"value10" in [x for v in test.values() for x in v] or 'value10' in values

>>True


查看完整回答
反对 回复 2019-12-13
  • 3 回答
  • 0 关注
  • 4836 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信