2017-10-09 16 views
1

dictd에있는 키 k을 찾는 파이썬에서 내장 된 방법이 있습니까? 그 키가 없으면 다른 것을 찾으십시오. dicte? Python dicts 체인에서 키를 찾으십니까?

dict는 S = d> e => f => ...의 임의의 긴 사슬 연장 될 수 있는가?

+0

dicts 사이의 선형 검색입니까? 항상 첫 번째로, 그 다음에 전자로, 그 다음에 f ...로 보일 것입니다. – Vinny

+0

@Vinny - 예, 나는 dicts를 순서대로보고 싶습니다. – user200783

답변

3

당신이 사용할 수있는 collections.ChainMap :

from collections import ChainMap 

d = ChainMap({'a': 1, 'b': 2}, {'b': 22}, {'c': 3}) 
print(d['c']) 
print(d['b']) 

이는 것 출력 :

'b'에 대한 조회는지도의 첫 번째 사전으로 만족하고, 나머지 dicts 곳되지
 
3 
2 

공지 것을 수색했다.

ChainMap은 다음과 같을 수 있습니다 파이썬 3.3

+0

Python2.7을 지원해야하는 경우 백 포트를 사용할 수 있습니다. https://pypi.python.org/pypi/chainmap – guettli

1

에 도입되었다 :

if k in d: 
    pass 
elif k in e: 
    pass 
elif k in f: 
    ... 
2

것은 당신이 ChainMap 사용할 수없는, 파이썬 < 3.3 사용하는 경우.

이 덜 우아하지만 작동합니다

a = {1: 1, 2: 2} 
b = {3: 3, 4: 4} 

list_dicts = [a, b] 

def lookup(key): 
    for i in list_dicts: 
     if key in i: 
      return i[key] 
    raise KeyError 

lookup(1) # --> 1 
lookup(4) # --> 4 

당신은 목록에 모든 dicts을 추가하고, 그들을보고하는 방법을 사용합니다.