2 回答

TA贡献1875条经验 获得超3个赞
使用仅在周围浮动的自变量来执行此操作将非常困难。为什么不使用字典呢?
myDict = {"A":3, "B":1, "C":2}
D = ["A", "B", "C"]
D.sort(key=lambda l:myDict[l])
在这里,我们在词典中有每个字母及其对应的数字。我们有一个字母顺序混乱的列表,我们可以调用sort()它。但是,我们没有使用默认的比较,而是以内联lambda函数的形式提供了自己的排序函数,该函数从字典中获取与每个字母匹配的数字。
如果您不熟悉lambda语法,则与执行此操作相同,但更为紧凑:
def customSort(l):
return myDict[l]
D.sort(key=customSort)

TA贡献1777条经验 获得超3个赞
使用collections.OrderedDict,您可以提供按值排序的键值对列表。
from collections import OrderedDict
from operator import itemgetter
d = {'A': 3, 'B': 1, 'C': 2}
res = OrderedDict(sorted(d.items(), key=itemgetter(1)))
# get keys ordered by value
print(res.keys())
odict_keys(['B', 'C', 'A'])
# get ordered values
print(res.values())
odict_values([1, 2, 3])
添加回答
举报