为了账号安全,请及时绑定邮箱和手机立即绑定

Python 中 lambda 函数的问题

Python 中 lambda 函数的问题

幕布斯6054654 2023-10-25 10:51:05
map = {}for i in words:    if i not in map:        map[i] = 0    map[i] += 1    values = list(map.items())values = sorted(values, key=lambda x: [x[1], x[0]], reverse=True)   res = []for i in range(len(values)-1, len(values)-1-k, -1):    res.append(values[i][0])return res我试图首先按较高频率计数排序,然后按字母顺序排序。我该如何使用 lambda 函数来做到这一点?values是一个元组列表,其中元组中的第一个元素表示单词,第二个元素表示其频率计数。例如:("hi", 2)例如,["i", "love", "leetcode", "i", "love", "coding"]应该输出[('i', 2), ('love', 2), ('leetcode', 1), ('coding', 1)],但我的正在输出[('love', 2), ('i', 2), ('leetcode', 1), ('coding', 1)]。
查看完整描述

1 回答

?
慕后森

TA贡献1802条经验 获得超5个赞

由于您想按频率降序排序,然后按字母顺序排序,因此您不能使用reverse=True它来按降序对单词进行排序。-x[1]相反,您可以对频率进行降序排序:


values = [('i', 2), ('love', 2), ('leetcode', 1), ('coding', 1)]


values = sorted(values, key=lambda x: (-x[1], x[0]))

print(values)

输出:


[('i', 2), ('love', 2), ('coding', 1), ('leetcode', 1)]


查看完整回答
反对 回复 2023-10-25
  • 1 回答
  • 0 关注
  • 99 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信