Python按键排序,打破关系

时间:2017-04-03 16:19:20

标签: python sorting lambda key

original = ["aga", "aaa", "aba"]

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

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

我试过了:

final = sorted(sorted(original, key=lambda x: (dict[x]), key=original.index))

2 个答案:

答案 0 :(得分:5)

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

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

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

另请注意,请勿使用dictlist等名称,以避免以后在代码中使内置函数无法使用。

答案 1 :(得分:0)

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

import collections
d = collections.OrderedDict()
d['aba'] = 1
d['aaa'] = 0
d['aga'] = 1
print(d)