【发布时间】:2016-04-17 07:48:15
【问题描述】:
我正在尝试从包含元组和字典的列表中获取特定字典。我将如何从下面的列表中返回带有键“k”的字典?
lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}]
【问题讨论】:
标签: python list dictionary tuples
我正在尝试从包含元组和字典的列表中获取特定字典。我将如何从下面的列表中返回带有键“k”的字典?
lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}]
【问题讨论】:
标签: python list dictionary tuples
def return_dict(lst):
for item in lst:
if isinstance(item,dict) and 'k' in item:
return item
raise Exception("Item not found")
【讨论】:
为你的
lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}]
使用
next(elem for elem in lst if isinstance(elem, dict) and 'k' in elem)
返回
{'k': [1, 2, 3]}
即列表中的第一个对象,它是一个字典并包含键“k”。
如果没有找到这样的对象,这会引发StopIteration。如果您想返回其他东西,例如None,使用这个:
next((elem for elem in lst if isinstance(elem, dict) and 'k' in elem), None)
【讨论】:
如果您不介意代码有点丑,我会遍历列表并检查每个元素。示例:
def find_dict(lst):
for element in lst:
if type(element) == dict:
if 'k' in element.keys():
return element
应该有一个更pythonic的方式来解决这个问题。
【讨论】: