2013-03-10 4 views
0

bigrams 사전이있는 경우 해당 키를 검색하여 그 값을 인쇄하려면 어떻게해야합니까?파이썬에서 dict 키를 검색합니다.

wordsCounts = {('the','computer'): 2 , ('computer','science'): 3 , ('math','lecture'): 4, ('lecture','day'): 2} 

따라서 ('math','lecture') 쌍이 있는지 여부를 검색하고 싶습니다.

pair = ['computer','science'] 
for k in wordscount.keys(): 
    if wordscount[k] == pair: 
     print wordscount[v] 

그래서 결과는 목록을 것 ('computer','science'): 3

답변

5

그냥 테스트 쌍의 튜플가있는 경우 :

if tuple(pair) in wordscount: 
    print wordscount[tuple(pair)] 

에있는 모든 키를 통해 루프 필요가 없습니다 사전; 파이썬 사전은 찾고자하는 키를 제공한다면 일치하는 키를 찾는 것이 훨씬 효율적이지만 같은 유형이어야합니다. 사전 키는 튜플이므로 검색 할 때 튜플 키를 사용하십시오.

사실, 파이썬 사전에서는 목록이 변경 가능하기 때문에 키로 사용할 수 없습니다. 키 자체를 변경할 수 있으면 키를 정확하게 검색 할 수 없습니다. 먼저 당신이 작동하지 않는 이유를 알고 할 수 있습니다

+0

첫 번째 장소에 터플을 만들지 않는 이유는 무엇입니까? 'pair = ('computer', 'science')' –

+0

@ MarkusMeskanen : 사용자가 여기 다른 곳에서 목록을 가지고 있다고 가정합니다. –

+0

@MartijnPieters : Pythonic 방법은 필요한 요소에 액세스하려고 시도하고 존재하지 않는 경우 예외를 잡는 것입니다. – rburny

0

..

for k in wordscount.keys(): 
    if wordscount[k] == pair: 

wordscount.keys()

이 튜플과 다음 줄의 사용자 목록을 반환은 목록 '쌍 DICT의 wordsCount의 값을 비교하는 것입니다. 솔루션은

for k in wordscount.keys(): 
    if k == tuple(pair): 
     print workscount[k] 
+0

감사합니다. bgporter! 나는 그걸 막하려고했다. :) – Arovit

관련 문제