2016-08-30 4 views
-2

다음과 같은 문제가 있습니다. 단어와 수를 포함하는 word_count라는 defaultdict가 있습니다. Google Speech API의 답글을 계산하여이 사실을 알 수 있습니다. 그러나이 API는 독일 문자 'ö'에 대해 '\ 303 \ 266'과 같은 것을 돌려줍니다.Python에서 defaultdict 키의 이름 바꾸기

defaultdict 작성 :

word_count = defaultdict(int) 
for line in fileinput.input([file]): 
    line = line.strip() 
    words = line.split() 
    for word in words: 
     word_count[word] += 1 

지금까지 잘 작동을 는 지금은 위에 표시된 이러한 것들 중 하나가있는 경우,이 딕셔너리를 통해 테스트를 가서 이런 식으로 옳은로 교체 할 , 나는 그 딕트를 프린트 할 수 있고 그 번호로 나에게 그 말을 가져다 준다.

지금 키를 교체 :

for key,val in word_count: 
    if '\\303\\266' in key: 
     new = key.replace('\\303\\266', 'ö') 
     word_count[new] = word_count.pop(key) 

지금이 작동하지 않습니다, 나는 그것이 정수를 예상대로 (키) 팝업 할 수 없기 때문에 같아요. 어떻게 또 할 수 있니? 몇 가지 방법을 시도했지만 여기서는 아무 것도 작동하지 않는 것 같습니다.

도움이 될 것입니다.

솔루션 :

내가 DICT를 분류하여 튜플의 목록에 보니이, 내 잘못이 밝혀졌습니다. 이 점을 이해하는 데 도움을 주신 모든 분들께 감사드립니다!

+0

*의 사전 기능은 "* 작동하지 않습니다"*? – jonrsharpe

+1

'word_count.items()'? –

+0

'for key, word_count : val '은 어떻게 작동 했습니까? 당신이 얻고있는 오류는 무엇입니까? – ozgur

답변

1

는 튜플 대신 dict의 목록으로 처리되는 것을 알 수. 따라서 list.pop은 항상 정수를 기대하므로 오류가 발생합니다.

TypeError: list indices must be integers, not str 

dict이 중요 할 것으로 예상됩니다. 그래서 여기에 dict 같은 입력을 변환하거나 그것의 색인을 사용하여 목록에서 팝업해야합니다.

0

당신과 같이 그것을 할 수 있습니다 : 다음

word_count['ö'] = word_count[key] 

를 실행 한 다음 토론에서

del word_count[key] 
+0

나는 word_count [ 'ö'] = word_count [key]가 표시됩니다. TypeError : 목록 색인은 정수 여야합니다. , str'이 아니야 그리고 이것으로 전체 키를 'ö'로 바꿀 수는 없을 것이다. 나는이 잘못된 숫자가 전체 키가 아닌 바뀌면 좋겠다. –