2

このようなことを解決できないのは本当に馬鹿げていると思いますが、私は何も言えません。私はこれを行うための短くてエレガントな方法を考え出す必要があります、そして何らかの理由で私はただできません!

コンセプトはとてもシンプルです

私にはリストが[4,3,5,2,1]あり、5人の個人がいますA, B, C, D, E

A=4 B=3 C=5 D=2 E=1

今、私はそれらがなるようにそれらの数に基づいて昇順でそれらを配置する必要があります

['E', 'D', 'B', 'A', 'C']

私はこれを理解できない理由を真剣に理解していませんD:

4

3 に答える 3

5
order  =  [4, 3, 5, 2, 1]
people = "ABCDE"

result = [x[1] for x in sorted(zip(order, people))]
于 2012-09-16T15:01:31.440 に答える
3

各「個人」に番号を関連付ける辞書を作成できます。

>>> a = [4, 3, 5, 2, 1]
>>> b = ["A", "B", "C", "D", "E"]
>>> d = dict(zip(b, a))
>>> d
{'A': 4, 'C': 5, 'B': 3, 'E': 1, 'D': 2}

この辞書を使用すると、キーを値で簡単に並べ替えることができます。

>>> sorted(d, key=d.get)
['E', 'D', 'B', 'A', 'C']
于 2012-09-16T15:04:19.303 に答える
2

を使用zipして2つのリストをタプルのリストに結合[(A,1),(B,3),...,(E,5)]し、カスタムcmpメソッドで並べ替えを使用して数値を比較してから、を使用mapして文字を引き出します。

于 2012-09-16T15:00:22.997 に答える