2014-07-24 3 views
-1

값에 대한 공통의 키를 찾을 수 :사전, 나는 이런 요소의 많은 사전의 큰 사전을 가지고

'470046757': {'Cmstrk': 'cms_trk_dcs_04:CAEN', 'Crate': 'easyCrate4', 'Board': 'easyBoard10', 'Branch': 'branchController04', 'TrackerSY': 'CMS_TRACKER_SY1527_9', 'Channel': 'channel002\n'} 

와 다음의 요소하는 등

'3646457': {'Cmstrk':'cms_trk_dcs_13:CAEN',...,'Channel':'channel005\n'} 

하고있다 .

key1'2383495'key2 (또는 제 사전 가치) Cmstrk, Crate ...이고, 각각의 값 Channel 등 (모두 key1 그들 사이 다르다)

다른 key1위한 수도있는 동일한

두 개 이상의 값을 가질 수있는 공통적으로 key1을 알 수 있습니까? 입력 할 경우 을 입력하십시오. branchController04,CMS_TRACKER_SY1527_9 해당 속성으로 key1이 모두 필요합니다.

는 이미 key2의 특정 값 (I 예를 channel002\n에 대한 입력 및 '54654556'를 반환)에 대한 key1를 반환하는 스크립트를했지만 나는 공통점이 키에 대해 알고하지 않습니다.

+0

당신은 인덱싱 및 반복 몇 가지 문제가있는 경우 구조를 넘어, 자신 만의 것을 만들 수 있습니다. – soupault

+0

나는 사전 (key1) 사전 (key2 각각의 값)와 나는 주어진 값 (key2의 값)에 공통적으로 키 (key1)를 알고 싶다 – celonilanaparticle

답변

0

정확하게 이해하면 key2을 (를) 알 수 없습니다.

keyword = 'branchController04' 
matchingKey2 = None 
foundKey1s = [] 
for k1 in myDict: 
    if not matchingKey2 : 
     for k2 in myDict[k1]: 
      if myDict[k1][k2]==keyword: 
       matchingKey2 = k2 
       foundKey1s.append(k1) 
    else: 
     if myDict[k1][matchingKey2]==keyword: 
      foundKey1s.append(k1) 

편집 : 질문을 다시 읽은 후, 나는 그것이 어떤 key2 수 이해합니다. 그렇다면 : 나는 경우 다수의 세트를 사용

keyword = 'branchController04' 
foundKey1s = {k1 for k2 in myDict[k1] for k1 in myDict if myDict[k1][k2]==keyword} 

k2 값은 하나의 서브 딕셔너리에

+0

것은 내가 같은 요소를 많이 가지고있다. 질문에 하나 – celonilanaparticle

0
def db_position(db, search_name): 
    # Iterating over main dict 
    for main_key, main_value in zip(db.keys(), db.values()): 
     # over secondary dict(s) 
     for secn_key, secn_value in zip(main_value.keys(), main_value.values()): 
      if secn_value == search_name: 
       print("Main: ", main_key) 
       print("Secn: ", secn_key) 

database = dict() 
database.update({'470046757': {'Cmstrk': 'cms_trk_dcs_04:CAEN', 
           'Crate': 'easyCrate4', 
           'Board': 'easyBoard10', 
           'Branch': 'branchController04', 
           'TrackerSY': 'CMS_TRACKER_SY1527_9', 
           'Channel': 'channel002\n'}}) 
database.update({'3646457': {'Cmstrk': 'cms_trk_dcs_13:CAEN', 
          'Channel': 'channel005\n'}}) 

db_position(database, 'easyCrate4') 

실행 keyword 일치 :

>python dicts.py 
('Main: ', '470046757') 
('Secn: ', 'Crate') 
관련 문제