You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Python程序修改需求:按受欢迎程度降序输出影视类型统计结果

解决方法

没问题,咱们来调整你的程序,实现按受欢迎程度降序、同次数按名称升序排列的需求。下面是修改后的完整代码:

from collections import defaultdict

# 定义需要统计的影视类型集合,方便快速判断
TARGET_GENRES = {"Action", "Comedy", "History", "Horror", "Romance", "Adventure"}

num = int(input())
genre_count = defaultdict(int)  # 用int类型的defaultdict直接计数,更高效

for _ in range(num):
    parts = input().split()
    # 提取当前输入的所有类型
    genres = parts[1:]
    # 遍历每个类型,只统计目标范围内的类型
    for genre in genres:
        if genre in TARGET_GENRES:
            genre_count[genre] += 1

# 排序:先按计数降序,计数相同按类型名称升序
sorted_genres = sorted(genre_count.items(), key=lambda x: (-x[1], x[0]))

# 输出结果
for genre, count in sorted_genres:
    print(f"{genre} : {count}")

关键修改说明:

  • 数据结构优化:把原来的defaultdict(list)改成defaultdict(int),因为我们只需要统计每个类型的次数,不需要存储对应的电影名称列表,既节省内存,代码也更简洁。
  • 简化计数逻辑:不再用多个if逐个判断类型,而是先定义目标类型集合,遍历输入的类型时直接判断是否在集合内,符合条件就累加计数。
  • 核心排序逻辑:使用sorted()函数,通过key=lambda x: (-x[1], x[0])实现需求:
    • -x[1]表示按计数降序排列(默认升序,取负数后反转成降序)
    • x[0]表示当计数相同时,按类型名称的字母升序排列
  • 输出适配:直接遍历排序后的结果列表,按要求格式输出即可。

测试你提供的示例输入,输出结果完全符合期望:

Action : 3
Horror : 3
Comedy : 2
Romance : 2
Adventure : 1
History : 1

内容的提问来源于stack exchange,提问作者hello world

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 21:42:43