2011-07-30 5 views
-1

일반적인 문제인 것 같지만 해결책을 찾지 못하는 것 같습니다.Python3은 값에서 키를 얻습니까?

두 개의 사전 sqldicthitsdict을 포함하는 Python3 스크립트가 있습니다. 이 코드는 sqldict[value][0] == hitsdict[thing][1] 인 경우 사전 값을 출력합니다.

for value in sqldict: 
     for thing in hitsdict: 
      if sqldict[value][0] == hitsdict[thing][1]: 
       print(hitsdict[thing][1],sqldict[value][5]) 

나는 또한 sqldict[value][0] == hitsdict[thing][1] 비교 일치하는 값과 관련된 키를 좀하고 싶습니다,하지만 난 관련 키를 얻는 방법을 알아낼 수없는 이유는 무엇입니까? 나는이 같은 일을하려고했다 :

for key, value in sqldict.items(): 
     for thing in hitsdict: 
      if sqldict[value][0] == hitsdict[thing][1]: 
          print(key,hitsdict[thing][1],sqldict[value][5]) 

누군가가 내 문제가 무엇인지 설명 할 수 및 sqldict[value][0] == hitsdict[thing][1] 비교하면 어떻게 내 통과 값에서 키를받을 수 있나요? 고맙습니다!

편집 : 내가 가진 한 가지 아이디어는 키를 덧셈 값으로 추가하는 것입니다. 또 다른 pythonic 방법이 있습니까?

+1

무슨 말씀 이세요? – hop

+0

죄송합니다. 내 질문에 혼란이 생겼습니다. 설명하기가 어렵습니다. 기본적으로 두 개의 사전이 있었고 어느 ​​값 항목이 두 사전에 있는지 찾은 다음 해당 값에 대해 해당 키를 가져 오려고했습니다. 사전 값으로 키를 사용하는 나의 트릭은 다른 모든 요구를 비슷하게 만들었습니다. 도와 주셔서 감사합니다! – drbunsen

답변

1

사전에있는 항목을 반복하여 값을 찾고 있습니다. 그것은 잘못된 방법입니다. 사전의 목적은 키를 사용하여 사물을 보는 것입니다.

요약하면 데이터 구조가 완전히 엉망입니다. 우리는 그것이 어떻게 보이는지 모르기 때문에 어떻게 표시해야하는지 말할 수는 없지만 다른 한편으로는 값 중 하나에 "sql"이라는 단어가 있습니다.

SQL 쿼리를 사용하여 대신 수행하는 것이 좋습니다.

1

사전 조회는 "값순"이 아니라 "키 별"입니다.

>>> d = {'key1': 'value1', 'key2': 'value2', 'key3': 'value3'} 
>>> for key in d: 
...  print key 
... 
key3 
key2 
key1 

미안하지만 다른 답변은 생각할 수 없지만 "너는 그거야?"

0

"역 사전"이라고 부를 수 있습니다.

dict1 = {key1: value1, key2: value2, ...} 
dict1_inv = {value1: key1, value2: key2, ...} 

지금 당신은 신속하게 값을 각 키와 역에 관련된 얻을 수 있습니다 : 키 각 값과 연관된 내 생각은 두 개의 사전을 만들 수있다.

이것이 "Pythonic"인지는 모르겠지만 이해하는 바에 따르면 문제를 해결해야합니다.

관련 문제