2014-05-15 3 views
3

파이썬에서 중첩 된 데이터 구조에서 키를 검색하려면 적절한 솔루션이 필요합니다.값으로 파이썬 검색

SERVICES = { 
    'domain': ['check','whois','register'], 
    'user': ['create','show','delete'], 
    'invoice': ['toPdf','print'] 
} 

배열 키 값과 반환 '도메인을'확인 '인 확인하는 가장 좋은 방법은 무엇입니까 :이 같은'확인 '값 변수 및 DICT을 가지고 은 가정하자?

답변

3

표준 접근 방식 :

for k, v in SERVICES.items(): # or iteritems in Python 2 
    if 'check' in v: 
     print(k) # 'domain' 
     break 

당신이 조건에 일치하는 여러 개의 키를 기대, 그냥 break를 제거합니다.

기능적 접근 :

>>> next(filter(lambda x: 'check' in SERVICES[x], SERVICES)) 
'domain' 
3

단순히 사전 키 반복하고 check 키에 대응하는 값의 값 중 하나인지 확인한다. 당신이 그것을 발견하면 next 전화를주세요.

print next(key for key in SERVICES if 'check' in SERVICES[key]) 
# domain 
2
SERVICES = { 
    'domain': ['check','whois','register'], 
    'user': ['create','show','delete'], 
    'invoice': ['toPdf','print'] 
} 

print [k for k in SERVICES if 'check' in SERVICES[k]]