「マルチセットの最初の項目を選択するにはどうすればよいですか?」という質問に言いたいことがあります。 Multisetは既に周波数に従って並べられているようです。マルチセットで最大発生数を持つ要素を選択
私はMultiset myList = Multiset.create()を持っています。
[maa00 mfnt11 malignlft mbold mlt18 mfl x 3, caa00 cfnt11 calignlft cbold clt17 cfl]
myList.getIndex(0)のようなメソッドが見つかりませんでした。最後に、最大の頻度を持つ要素の数が必要であることに注意してください。
これには1つのライナーがありますか?あるいは私はその反復をしなければならないのですか?
アップデート: 私が使用して最大周波数を取得しています:
myList.count(Multisets.copyHighestCountFirst(myList).asList().get(0)));
しかし、これは遅すぎます。私は正確に何を使うべきですか?
更新1:上記のcopyHighestCountFirstメソッドの使用が遅すぎることが判明しています。あるループのインスタンスでは、ループなしで平均40ミリ秒に対抗して80ミリ秒かかることになります。 大きなループでは、単純な反復を好むべきですか?
アップデート2:
myList.count(myList.entrySet().iterator().next().getElement())
をパフォーマンスにほとんど影響を与えずにゼロ:それは使用して作業しました。私はまだそれを行うための良い方法があるのだろうかと思っています。
追記:それはあなたが望むものをはっきりしていない編集内容とフレージングのので
j = defaultdict(int)
for k in clList:
j[k] +=1
result1 = max(j.iteritems(), key=lambda x:x[1]) //count of frequency of item with max count
あろう今それを得た。ありがとう。 – akshayb