Python如何按子列表首单词出现频次从高到低排序多维列表
实现方法
核心逻辑
- 提取所有子列表的第一个元素,用
Counter统计每个单词的出现频次 - 排序时以对应单词的频次倒序为排序依据,频次相同的元素默认保留原列表中的相对顺序
完整可运行代码
from collections import Counter # 示例输入 input_list = [['red', 1], ['blue', 2], ['blue', 3], ['green', 4], ['red', 5], ['red', 6]] # 仅统计每个子元素首单词的出现频次 word_counts = Counter(sublist[0] for sublist in input_list) # 按频次从高到低排序 sorted_list = sorted(input_list, key=lambda x: -word_counts[x[0]]) print(sorted_list)
如果偏好显式声明倒序参数,也可以将排序代码替换为:
sorted_list = sorted(input_list, key=lambda x: word_counts[x[0]], reverse=True)
两种写法效果完全一致。
输出结果
[['red', 1], ['red', 5], ['red', 6], ['blue', 2], ['blue', 3], ['green', 4]]
内容的提问来源于stack exchange,提问作者AleksandrC
相关产品推荐
相关产品推荐

