Python按键排序,打破关系

问题描述 投票:0回答:2
original = ["aga", "aaa", "aba"]

dict = {
    "aba": 1,
    "aaa": 0,
    "aga": 1
}

我需要按dict值排序,并且断路器需要保持原始顺序,我该怎么做?示例非常简化。

我试过了:

final = sorted(sorted(original, key=lambda x: (dict[x]), key=original.index))
python sorting lambda key
2个回答
5
投票

只需根据字典中的值对它们进行排序。原始订单将保留为关系:

final = sorted(original, key=dct.get)
print final
# ['aaa', 'aga', 'aba']

Timsort - Python的标准排序算法 - 稳定;比较相等的项目保留其相对顺序。

另外请注意,不要使用像dictlist这样的名称来避免在以后的代码中使内置函数无法使用。


0
投票

Python中的字典不存储原始订单。但是,您可以使用OrderedDict来维护您希望的顺序:

import collections
d = collections.OrderedDict()
d['aba'] = 1
d['aaa'] = 0
d['aga'] = 1
print(d)
© www.soinside.com 2019 - 2024. All rights reserved.