最近のプロジェクトで、リスト内の単語の出現回数を数えて並べ替える必要があるという問題が発生しました。頻度順に、最も頻繁に出現する単語がリストの先頭に表示されます。解決策の基本的なアイデアはありましたが、それを Python 3.3 で効果的に実装する方法がわかりませんでした。
幸いなことに、Python の collections.Counter クラスは、この問題に対するシンプルで効率的な解決策を提供します。以下に例を示します。
<code class="python">from collections import Counter # Create a list of words list1 = ['apple', 'egg', 'apple', 'banana', 'egg', 'apple'] # Use Counter to count word occurrences counts = Counter(list1) # Print the counts print(counts) # Counter({'apple': 3, 'egg': 2, 'banana': 1})</code>
この例では、Counter は、キーが単語、値がそのカウントである辞書のようなオブジェクトを作成します。 print ステートメントは、一意の各単語のカウントを出力します。
頻度に基づいて単語を並べ替えるには、Counter の most_common() メソッドを使用できます。このメソッドは、各タプルに単語とその数が含まれるタプルのリストを返します。デフォルトでは、リストは頻度の降順で並べ替えられます。つまり、最も頻繁に使用される単語が先頭になります。
単語のリストを並べ替える方法は次のとおりです。
<code class="python"># Sort the words based on frequency sorted_words = [word for word, count in sorted(counts.most_common(), key=lambda x: x[1], reverse=True)] # Print the sorted list print(sorted_words) # ['apple', 'egg', 'banana']</code>
このコードでは、sorted は、reverse=True 引数を使用して、タプルのリストを 2 番目の要素 (カウント) で降順に並べ替えます。これにより、最も頻繁に使用される単語がsorted_wordsリストの最初に来るようになります。
以上がCounterを使用してPythonで単語の頻度を数えて並べ替える方法?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。