2016-11-18 2 views
0

는 우리가 들어있는 .txt 파일 이름 문자가 말할 수있는 텍스트 파일에서있는 키는 개별 문자는 내가 사전을 만드는 방법에 대해 갈 것이라고 어떻게예를 들어,

a 
b 
b 
c 
d 
d 
d 
d 

을 사전 만들기 파일에서 찾은 값은 각 문자가 나타나는 횟수입니다. 예를 들어, a는 키이고 해당 값은 1이고 b는 키이고 그 값은 2입니다.

시작 파일을 배우고 사전을 작성하기 시작 했으므로 뭔가 시작한다고 가정합니다 같은

file = open('letters.txt', 'rt') 

나는 RT 부분이 맞다면 아주 잘 모르겠지만, 우리는 그렇게 '파일'을 검색 할 것,

for letter in file: 

하지만 검색하는 방법을 아주 잘 모르겠어요 글자의 경우 키를 만든 다음 글자가 값에 나타나는 횟수를 추가하십시오 사전에. 어떤 충고? 당신이 정말 dict로합니다

>>> from collections import Counter 
>>> with open('letters.txt') as f: 
...  c = Counter(map(str.strip, f)) 
>>> c 
Counter({'a': 1, 'b': 2, 'c': 1, 'd': 4}) 

:

+0

한 가지 : 당신은 분명히 학습 운동을하고있는 것처럼

, 당신은 아마 같은 뭔가를 찾고있다 추가 정보를 얻으려면 여기를 클릭하십시오. 만약'X in file : for'에 대해 알고 있다면,'X '가 무엇인지를 그냥 확인하는 것입니다. 여러분이 실험을 통해 무엇을해야하는지 추론 할 수있을 것입니다. –

답변

1

파이썬은 당신이 찾고있는 않습니다 정확히 Counter라는 collections 모듈 dict에 편리한 확장이

>>> dict(c) 
{'a': 1, 'b': 2, 'c': 1, 'd': 4} 
+1

'Counter '는 이미 dict (즉, isinstance (c, dict) -> True')이므로 변환은 인쇄 목적에만 관련이 있습니다. –

+3

예'Counter'는'dict'이지만 'dict (c) ['e ']'는 KeyError 인 반면'c ['e ']'는'0'을 반환하는 다른 동작을합니다. 그래서 저는 그것이 단지 전시를위한 것이라고 동의하지 않습니다. 그것은 행동 기대에 달려있을 수 있습니다. – AChampion

1

하는 경우 실용적인 문제였습니다. 아마도 다음과 같이했을 것입니다 :

from collections import Counter 
counts = Counter([ln.strip() for ln in open('letters.txt')]) 

또는

counts = Counter(open('letters.txt').read()) 

(이것은 또한 개행 문자를 계산합니다). 여러 단계에서 변수를 인쇄 해보십시오, 또는`전화 type` 또는`help` : 시작하는

counts = dict() 
for line in open('letters.txt'): 
    letter = line[0] 
    counts[letter] = counts.get(letter, 0) + 1