我有一个项目,我必须通过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
如果我输入“Python真的很酷”#line 1 “我正在使用python”#line 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
答案 0 :(得分:1)
既然你已经知道了defaultdict,我会继续这样做 - 尽管我会使用defaultdict(list)
作为键的words
,值会列出行号。然后,最后,您可以遍历字典,获取列表的len
以获取您的计数(当您打印行号以摆脱时,可能使用sorted
set
重复)。