1

Pythonの辞書からキーのソートされたリストを取得したい(私の辞書はintからintへのマッピングです)。値を昇順で並べ替えたい。ただし、衝突(同じ値)の場合は、キーの数値でキーを並べ替えたいと思います。次のコードはそれを行います

key=lambda x: (dict[x],x)

ただし、値の降順とキーの順序(衝突の場合のみ)を降順にしたいと思います。逆のパラメーターを適用することもできますが、それはキーとその値の両方で同じように機能します。

個別に行う方法はありますか?

>>> my_dict = {1:5, 2:4, 3:5, 26:3, 5:2, 6:4, 8:3}
>>> my_dict
{1: 5, 2: 4, 3: 5, 5: 2, 6: 4, 8: 3, 26: 3}
>>> sorted_list = sorted(my_dict, key=my_dict.get)
>>> print sorted_list
[5, 8, 26, 2, 6, 1, 3]

出力を[5、26、8、6、2、3、1]にしたい

4

1 に答える 1

5

いくつかのオプションがあります。

>>> my_dict = {1:5, 2:4, 3:5, 26:3, 5:2, 6:4, 8:3}
>>> sorted(my_dict, key=lambda x: (my_dict[x], -x))
[5, 26, 8, 6, 2, 3, 1]
>>> sorted(sorted(my_dict)[::-1], key=my_dict.get)
[5, 26, 8, 6, 2, 3, 1]
>>> sorted(sorted(my_dict, reverse=True), key=my_dict.get)
[5, 26, 8, 6, 2, 3, 1]

最初のキーは数値(または少なくともこのように否定できるもの)であることに依存します。これは、ソートが安定しているという事実のみを使用する最後の2つよりも一般的ではありません。

于 2012-09-15T22:46:14.677 に答える