2016-01-12 20 views
6

Tôi đang cố gắng lấy một từ điển cụ thể từ trong danh sách chứa cả bộ dữ liệu và từ điển. Làm thế nào tôi sẽ đi về việc trở về từ điển với khóa 'k' từ danh sách dưới đây?Bộ từ và từ điển có trong Danh sách

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

Trả lời

7

Đối với bạn

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

sử dụng

next(elem for elem in lst if isinstance(elem, dict) and 'k' in elem) 

lợi nhuận

{'k': [1, 2, 3]} 

ví dụ: đối tượng đầu tiên của bạn r danh sách là một từ điển và chứa khóa 'k'.

Điều này tăng StopIteration nếu không tìm thấy đối tượng đó. Nếu bạn muốn trả lại thứ gì đó khác, ví dụ: None, sử dụng điều này:

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

Nếu bạn không thấy phiền chút nào trong mã, tôi sẽ lặp qua danh sách và kiểm tra từng phần tử. Ví dụ:

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

Nên có một cách thức sâu sắc hơn cho điều này có thể.

+1

Mất quá nhiều thời gian đánh máy này .. teamProbable thắng! – Skirrebattie

Các vấn đề liên quan