2011-08-16 4 views
0

stackoverflow question에서 계속됩니다.사전 목록에서 키의 값을 검색하고 다른 키 값을 반환하십시오.

data = [ 
    {'site': 'Stackoverflow', 'id': 1}, 
    {'site': 'Superuser', 'id': 2}, 
    {'site': 'Serverfault', 'id': 3} 
] 

내가 특정 값에 대한 모든 '사이트'키를 검색하고, 그 사전의 '아이디'값을 반환 할 : 나는 다음과 같은 데이터 구조를 가지고있다. 예를 들어, '슈퍼 유저'를 검색 한 결과 2를 반환해야합니다 :

>>> print find_id('Superuser') 
2 

내가 참조 된 문제의 솔루션을 사용했을 때, 나는 오류 접수 :

>>> if any(d['site'] == 'Superuser' for d in data): print d['Superuser'] 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
NameError: name 'd' is not defined 
>>> if any(d['site'] == 'Superuser' for d in data): print data['Superuser'] 
... 
Traceback (most recent call last): 
    File "<stdin>", line 1, in <module> 
TypeError: list indices must be integers, not str 

이 일의 가장 파이썬 방법은 무엇입니까?

+0

'데프 find_id (데이터, 이름) : 다음 반환'(데이터 일 동안 (D [ 'ID를'] D [ '사이트'] == 명), 없음 경우) – agf

답변

0

여기에 속임수가 없습니다. 그냥 수행

def find_id(data, name): 
    for d in data: 
     if d['site'] == name: 
      return d['id'] 
관련 문제