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)]
添加回答
举报
0/150
提交
取消