original = ["aga", "aaa", "aba"]
dict = {
"aba": 1,
"aaa": 0,
"aga": 1
}
我需要按dict值排序,并且断路器需要保持原始顺序,我该怎么做?示例非常简化。
我试过了:
final = sorted(sorted(original, key=lambda x: (dict[x]), key=original.index))
只需根据字典中的值对它们进行排序。原始订单将保留为关系:
final = sorted(original, key=dct.get)
print final
# ['aaa', 'aga', 'aba']
Timsort - Python的标准排序算法 - 稳定;比较相等的项目保留其相对顺序。
另外请注意,不要使用像dict
或list
这样的名称来避免在以后的代码中使内置函数无法使用。
Python中的字典不存储原始订单。但是,您可以使用OrderedDict来维护您希望的顺序:
import collections
d = collections.OrderedDict()
d['aba'] = 1
d['aaa'] = 0
d['aga'] = 1
print(d)