3

リストと辞書があります:

list1 = ["a", "b", "c", "d"]

dict1 = 
{
    "a": 4,
    "b": 3,
    "c": 5,
    "d": 9,
    "e": 2,
    "f": 8
}


私がしたいのは、dict1の対応する値に従ってlist1をソートすることです。

上記の例の場合、リストを["b", "a", "c", "d"]、値に従ってソートしたい..

私はそれが次のようなものであるべきだと知っています...

list2 = sorted(list1, key=dict1[x])

しかし、私は立ち往生しています:((

どんな助けでも本当に感謝します

4

4 に答える 4

4

あなたはとても近いです。key関数を取ります。dict1からの値の取得をラップする必要がありますlambda(@falsetruによっても指摘されています):

>>> list2 = sorted(list1, key=lambda x: dict1[x])
>>> list2
 ['b', 'a', 'c', 'd']
于 2013-11-13T03:38:48.250 に答える
0

私は標準的な解決策に打ちのめされたようですので、ここに別のタックがあります

from operator import itemgetter
[k for (k, v) in sorted(dict1.items(), key=itemgetter(1)) if k in list1]
['b', 'a', 'c', 'd']
于 2013-11-13T04:00:08.570 に答える