python的排序函数中的key参数如何工作?

发布于 2021-01-29 19:34:09

说我有

votes = {'Charlie': 20, 'Able': 10, 'Baker': 20, 'Dog': 15}

我明白

print(sorted(votes.items(), key = lambda x: x[1]))

会导致

[(’Able’,10),(’Dog’,15),(’Baker’,20),(’Charlie’,20)]]

但这如何工作?

关注者
0
被浏览
90
1 个回答
  • 面试哥
    面试哥 2021-01-29
    为面试而生,有面试问题,就找面试哥。

    传递key给您的函数将获得要排序的每个项目,并返回Python可以排序的“键”。因此,如果要按字符串的 相反顺序
    对字符串列表进行排序,可以执行以下操作:

    list_of_strings.sort(key=lambda s: s[::-1])
    

    这使您可以指定每个项目的排序依据值,而不必更改项目。这样,您不必构建反向字符串列表,对其进行排序,然后将它们反向反向。

    # DON'T do this
    
    data = ['abc', 'def', 'ghi', 'jkl']
    reversed_data = [s[::-1] for s in data]
    reversed_data.sort()
    data = [s[::-1] for s in reversed_data]
    
    # Do this
    
    data.sort(key=lambda s: s[::-1])
    

    在您的情况下,代码按元组中的 第二个 项目对每个项目进行排序,而通常它最初将按元组中的第一个项目进行排序,然后中断与第二个项目的联系。



知识点
面圈网VIP题库

面圈网VIP题库全新上线,海量真题题库资源。 90大类考试,超10万份考试真题开放下载啦

去下载看看