2017-08-01 5 views
-1

私は約10,000件のリストを反復しています。すべての商品について、私はそれを処理して価値を得る。名前と上位10の値を持つタプルのリストを値の降順に返したいと思います。Pythonのforループからの上位結果のリストを維持するには

それはこのようなものになります。

top_tuples = [] 
for item in itemlist: 
    cur_value = compute_value(item) 
    my_tuple = (item, cur_value) 
    if cur_value is > the smallest value on my list: 
     remove smallest value from top_tuples 
     add tuple to top_tuples at appropriate index #index is based on value 

はありがとうを。 itemgetterなし

from operator import itemgetter 

tuples_gen = ((item, compute_value(item)) for item in itemlist) 
top_tuples = sorted(tuples_gen, key=itemgetter(1), reverse=True)[:10] 
+0

あなたは項目がどのように見えるか私たちを見ることができますか? –

+0

現在の "ベスト"リストを反復するには、 'for'ループ内に別のループが必要です。 –

+0

は、処理とソートを分離することができます。最初のプロセス。次にsort([sort build-in functions](https://wiki.python.org/moin/HowTo/Sorting)を使用して) – mquantin

答えて

1

これを試してみてください

tuples_gen = ((item, compute_value(item)) for item in itemlist) 
top_tuples = sorted(tuples_gen, key=lambda tup_gen: tup_gen[1], reverse=True)[:10] 
関連する問題