2016-01-12 47 views
6

我想从包含元组和字典的列表中获取特定字典。我将如何去从下面的列表中返回带有'k'键的字典?列表中包含的元组和字典

lst = [('apple', 1), ('banana', 2), {'k': [1,2,3]}, {'l': [4,5,6]}] 

回答

7

为了您

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

即你的第一个对象r列表,它是一个字典并包含密钥'k'。

如果找不到这样的对象,则会产生StopIteration。如果您想返回其他内容,例如None,使用此:

next((elem for elem in lst if isinstance(elem, dict) and 'k' in elem), None) 
6
def return_dict(lst): 
    for item in lst: 
     if isinstance(item,dict) and 'k' in item: 
      return item 
    raise Exception("Item not found") 
0

如果你不介意在你的代码,我会遍历目录,查看每个元素有点难看。例如:

def find_dict(lst): 
    for element in lst: 
     if type(element) == dict: 
      if 'k' in element.keys(): 
       return element 

这应该是一个更pythonic的方式可能。

+1

打字太久了.. teamProbable赢了! – Skirrebattie