Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/341.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在字典中的列表中查找值_Python_List_Dictionary - Fatal编程技术网

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