Python 如何在字典中的列表中查找值
我试图在一个列表中找到一个值,该列表位于一个字典中,并使用键删除 目的是让我不能在字典里加上相同的名字 字典看起来像这样:Python 如何在字典中的列表中查找值,python,list,dictionary,Python,List,Dictionary,我试图在一个列表中找到一个值,该列表位于一个字典中,并使用键删除 目的是让我不能在字典里加上相同的名字 字典看起来像这样: Dict={'1_number': ['1_name'], '2_number': ['2_name', '3_name']} 因此,我试图检查字典中是否存在3_名称 还尝试通过使用2_名称搜索2_编号来显示2_编号,也就是通过查找其中一个值来显示该键。您可以迭代字典中的值,并检查是否存在所需的列表值: >>> def find_in_dict(d, n
Dict={'1_number': ['1_name'], '2_number': ['2_name', '3_name']}
因此,我试图检查字典中是否存在3_名称
还尝试通过使用2_名称搜索2_编号来显示2_编号,也就是通过查找其中一个值来显示该键。您可以迭代字典中的值,并检查是否存在所需的列表值:
>>> def find_in_dict(d, name):
>>> for k,vals in d.iteritems():
>>> if name in vals:
>>> return k
>>> else:
>>> return False
>>> find_in_dict(d,'3_name')
'2_number'
>>> find_in_dict(d,'4_name')
False
您可以迭代字典的值,并检查是否存在所需列表值:
>>> def find_in_dict(d, name):
>>> for k,vals in d.iteritems():
>>> if name in vals:
>>> return k
>>> else:
>>> return False
>>> find_in_dict(d,'3_name')
'2_number'
>>> find_in_dict(d,'4_name')
False
您可以使用列表理解来搜索字典的值,然后如果您找到与正在搜索的值对应的键,则返回
(键,值)
的元组
d = {'1_number': ['1_name'], '2_number': ['2_name', '3_name']}
search = '3_name'
>>> [(key, value) for key, value in d.items() if search in value]
[('2_number', ['2_name', '3_name'])]
您可以使用列表理解来搜索字典的值,然后如果您找到与正在搜索的值对应的键,则返回(键,值)
的元组
d = {'1_number': ['1_name'], '2_number': ['2_name', '3_name']}
search = '3_name'
>>> [(key, value) for key, value in d.items() if search in value]
[('2_number', ['2_name', '3_name'])]
实际上,您可以结合列表理解,使用any
对字典中的值进行迭代,以进行短路评估,从而搜索项目以获得所需的结果
>>> any('3_name' in item for item in Dict.values())
True
或者,如果您有兴趣返回包含相关项的字典的所有实例,只需确保在if语句中检查该项的值的条件,并将键值对作为筛选器列表的一部分返回即可
>>> [(k, v) for k, v in Dict.items() if '3_name' in v]
[('2_number', ['2_name', '3_name'])]
最后,如果您确定有一个且只有一个项目,或者您希望返回第一个命中,请使用带有下一个命中的生成器
>>> next((k, v) for k, v in Dict.items() if '3_name' in v)
('2_number', ['2_name', '3_name'])
实际上,您可以结合列表理解,使用any
对字典中的值进行迭代,以进行短路评估,从而搜索项目以获得所需的结果
>>> any('3_name' in item for item in Dict.values())
True
或者,如果您有兴趣返回包含相关项的字典的所有实例,只需确保在if语句中检查该项的值的条件,并将键值对作为筛选器列表的一部分返回即可
>>> [(k, v) for k, v in Dict.items() if '3_name' in v]
[('2_number', ['2_name', '3_name'])]
最后,如果您确定有一个且只有一个项目,或者您希望返回第一个命中,请使用带有下一个命中的生成器
>>> next((k, v) for k, v in Dict.items() if '3_name' in v)
('2_number', ['2_name', '3_name'])