如果我的 list 是[('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]))

关于Python 3 列表 : How do I sort [ ('NJ' , 81), ('CA' , 81), ('DC' , 52)] 基于数字然后是字母?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/17711598/

10-12 18:16