Python:如何添加频率行数并使用字典按字母顺序排序

时间:2012-09-25 02:24:38

标签: python defaultdict

我有一个项目,我必须通过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

1 个答案:

答案 0 :(得分:1)

既然你已经知道了defaultdict,我会继续这样做 - 尽管我会使用defaultdict(list)作为键的words,值会列出行号。然后,最后,您可以遍历字典,获取列表的len以获取您的计数(当您打印行号以摆脱时,可能使用sorted set重复)。