주어진 문자열에서 단어 빈도를 계산하기 위해 사전을 사용하려고했습니다. 말 : 사전 이해력이있는 단어 빈도
s = 'I ate an apple a big apple'
내가 아마
collections.Counter
를 사용하는 것입니다 단어 빈도를 계산하는 가장 좋은 방법을 알고 있습니다. 그러나 사전 통역을 사용하여이 문제를 해결할 수 있는지 알고 싶습니다. (사전 이해없이)
내 원래 방법이었다
dict = {}
for token in s.split(" "):
dict[token] = dict.get(token, 0) + 1
하고 그것을 잘 작동합니다 :
dict
{'I': 1, 'a': 1, 'an': 1, 'apple': 2, 'ate': 1, 'big': 1}
내가
dict = {}
dict = {token: dict.get(token, 0) + 1 for token in s.split(" ")}
처럼,이에 대한 사전 이해를 사용하려고 그러나 이것은 효과가 없었습니다.
dict
{'I': 1, 'a': 1, 'an': 1, 'apple': 1, 'ate': 1, 'big': 1}
사전 이해력에 문제가 있습니까? 내가 이해할 때마다 dict.get('apple', 0
라고 불릴 때마다 그 자체를 사용했기 때문에, 나는 0
을 얻을 것인가? 그러나 나는 이것을 테스트하는 방법을 모른다. 그래서 나는 100 % 확실하지 않다.
P. 어떤 차이가 있다면 파이썬 3을 사용하고 있습니다.
이것은'collections.Counter' (dict 하위 유형)가 오래 전에 풀었던 것입니다. –
내장되어 있기 때문에 변수 이름으로 dict를 사용하지 않을 것입니다. 이렇게하면 무언가가 깨질 수 있습니다 – e4c5
변수'dict' isn 이해력이 완전히 계산 될 때까지 업데이트되지 않으므로'dict.get (token, 0)'을 사용하면 이전 줄의 빈 사전과의 컨설팅 만 수행됩니다. – khelwood