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