2012-09-25 3 views
0

나는 나는 부분 것을 얻은 sys.stdin파이썬 : 나는 라인 주파수의 수와 종류의 순으로 사용하여 사전

를 통해 각 단어의 주파수의 양을 받아야합니다 프로젝트를 추가 할 수있는 방법. 두 번째 부분은 각 단어에 대한 줄 번호를 얻는 것입니다, 나는 그것을 얻었지만 출력 문자열에 줄 번호를 추가 할 수 없다는 것과 단어가 동일한 주파수를 가진다면 사전 순으로 정렬하는 방법을 찾을 수 없음

if __name__ == '__main__': 

wordCount = defaultdict(list) 
words = {} 

for i, line in enumerate(sys.stdin.readlines()): 
    wordCount[line].append(i+1) #add the line number to each element in the line 
    for word in line.lower().split(): 
     words[word] = words.get(word, 0) + 1 

sortedList = sorted(words.items(), key=itemgetter(1), reverse=True) 
for word, frequency in sortedList: 
    print("%d %s" % (frequency, word))," " # <-- HERE I NEED TO ADD THE LINE NUMBER AND ALSO SORT ALPHABETICALLY 

I 입력 "파이썬은 정말 멋지다"# 라인 1 은 # 라인 "나는 파이썬 정말 함께 일하고"경우 2

출력이되어야합니다 :

2 python 1 2 

2 really 1 2 

1 am 2 

1 cool 1 

1 I 2 

1 is 1 

1 with 2 

1 working 2 

여기 내 코드입니다

+3

s/project/숙제? –

답변

1

당신은 이미 defaultdict에 대해 알고 있기 때문에 계속하겠다. words을 키로 사용하는 defaultdict(list)을 사용할 것이지만 그 값은 줄 번호 목록이 될 것이다. 마지막으로, 귀하의 수를 얻기 위해 목록의 len을 얻는 사전을 반복 할 수 있습니다 (중복을 없애기 위해 줄 번호를 인쇄 할 때 sortedset을 사용할 가능성이 있음).

+0

감사합니다! 나는 시도 할 것이다. – n3my