Python 3 List:如何根据数字和字母对[(‘NJ’,81),(‘CA’,81),(‘DC’,52)]进行排序?

如果我的名单是

[(‘IL’,36),(‘NJ’,81),(‘CA’,81),(‘DC’,52),(‘TX’,39)],

我怎样才能对它进行排序以便我的结果如此
[(‘CA’,81),(‘NJ’,81),(‘DC’,52),(‘TX’,39),(‘IL’,36)]?

最佳答案 非常直截了当:

your_list.sort(key=lambda e: (-e[1], e[0]))

例如

>>> your_list = [('IL', 36), ('NJ', 81), ('CA', 81), ('DC', 52), ('TX', 39)]
>>> your_list.sort(key=lambda e: (-e[1], e[0]))
>>> your_list
[('CA', 81), ('NJ', 81), ('DC', 52), ('TX', 39), ('IL', 36)]

请注意,上面对列表进行了排序.如果要将其包装在函数中而不是修改原始列表,请使用sorted

def your_sort(your_list):
    return sorted(your_list, key=lambda e: (-e[1], e[0]))
点赞