2016-05-25 4 views
-2
my_list = [{0: 0}, {1: 4.2}, {2: 3.7}, {3: 5.0}, {4: 4.0}, {5: 3.3}, {6: 4.3}, {7: 4.0}, {8: 3.9}, 0, {10: 4.0}] 

を見つけることは、リストを行くそれはを通して走査だ後(キーと値のペアから値のように)最高値を記録していますキーペアの値を新しいリストに追加し、元のリスト[my_list]からそのキーペアの値を削除し、さらに2回プロセスを繰り返します。したがって、希望の出力は次のようになります。私は私のプログラムが何をしたいのか、リスト内に含まれる辞書で3最大値

desired output: [{3: 5.0},{6: 4.3},{1: 4.2}] 

希望する出力を得る方法がわかりません。

+0

有効なアルゴリズムのように見えるので、問題は何ですか? – polku

+0

あなたのためにいくつかのコードを書きたいと思うようです。多くのユーザーは、苦労しているコーダーのコードを作成したいと考えていますが、通常、ポスターが既に問題を解決しようとしているときにのみ役立ちます。この努力を実証する良い方法は、これまでに書いたコード、サンプル入力(もしあれば)、予想される出力、実際に得られる出力(コンソール出力、トレースバックなど)を含めることです。あなたが提供する詳細があれば、受け取る可能性のある回答が増えます。 [FAQ]と[ask]を確認してください。 –

+0

あなたのリストに辞書以外の要素があります。 – Selcuk

答えて

0

私はあなたのmy_listの単一の整数がタイプミスであると仮定しています。

heapqモジュールを使用して、3大アイテムを取得します。これは、リスト全体をソートし、最後の3つの要素を抽出するよりもやや良い結果を示しています(メモリ効率はcomplexityです)。

>>> from heapq import nlargest 
>>> my_list = [{0: 0}, {1: 4.2}, {2: 3.7}, {3: 5.0}, {4: 4.0}, {5: 3.3}, {6: 4.3}, {7: 4.0}, {8: 3.9}, {10: 4.0}] 
>>> nlargest(3, my_list, key=lambda d: d.values()[0]) 
[{3: 5.0}, {6: 4.3}, {1: 4.2}] 

key機能は、それが単に個々の辞書は持っている唯一の値を取得し、リストから項目を注文されるべきで基準を指定します。

関連する問題