周波数で単純な文字列をソートする際に問題があります(文字列が入力として得られます。ソートされた文字列を出力として戻す必要があります)。降順)。 私は(元の単語が4つのEさん、2秒のの、1トン、1 rと1つのDが含まれている;ので、これらは、ソートされた取得)あなたに例を挙げてみましょう:私は使うべきスタックオーバーフロー状態にPython周波数別に文字列をソートする - ソート済みの関数でソートできない
In [1]: frequency_sort("treeseeds")
Out [1]: "eeeesstrd"
ほとんどのソリューションしかし、sorted()
は私の結果を得るために機能しますが、特定のケースでしか動作しないようです。
私は機能するはずの2つの機能を作ったが、それらのどれも私の特定の入力(以下を参照)でトリックをしていないようだ。
まず機能:
def frequency_sort(s):
s_sorted = sorted(s, key=s.count, reverse=True)
s_sorted = ''.join(c for c in s_sorted)
return s_sorted
セカンド機能:
最初の出力は大丈夫です:
import collections
def frequency_sort_with_counter(s):
counter = collections.Counter(s)
s_sorted = sorted(s, key=counter.get, reverse=True)
s_sorted = ''.join(c for c in s_sorted)
return s_sorted
私の出力は次のようになり、両方の機能を持ちます
In [1]: frequency_sort("loveleee")
Out [1]: "eeeellov"
第二の出力は
In [2]: frequency_sort("loveleel")
Out [2]: "leleelov"
それほどではない第3の出力は完全に厄介です:
In [3]: frequency_sort("oloveleelo")
Out [3]: "oloeleelov"
間違っている可能性は?それはどういうわけか 'o'と 'l'の文字に接続されていますか?それとも、私は何かが足りないのですか?
を3番目の関数を追加するのを忘れてしまった。 –
[リスト内の出現頻度によるリストの並べ替え]の可能な複製(https://stackoverflow.com/questions/23429426/sorting-a-list-by-frequency-of-occurrence-in-a-list) – depperm