0

sys.stdin を介して各単語の頻度の量を取得する必要があるプロジェクトがあります。

その部品を入手しました。2番目の部分は、各単語の行番号を取得しています。それを取得したと感じていますが、出力文字列に行番号を追加することはできません。単語の頻度が同じ場合、アルファベット順に並べ替える方法もわかりません

これが私のコードです:

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 は本当にクールです」と入力した場合 #1 行目「私は本当に Python で作業しています」 #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
4

1 に答える 1

1

あなたはすでにdefaultdictについて知っているので、私はそれを続けます-キーとしてdefaultdict(list)持っていたaを使用wordsし、値は行番号のリストになります。次に、最後に、辞書を反復処理してlenリストの を取得し、カウントを取得します (おそらくsorted set、行番号を出力して重複を取り除くときに a を使用します)。

于 2012-09-25T02:33:30.560 に答える