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

如何修正Python字典遍历代码以生成正确的用户视频评论汇总字典?

用户评论视频汇总字典重复覆盖问题

给定视频评论列表video_reviews,每个元素包含视频名称、浏览量及用户评论列表。需实现create_user_summary函数,生成以用户名为键、其评论过的所有视频列表为值的汇总字典。现有代码运行后出现AssertionError,部分用户的视频列表仅保留最后一条评论对应的视频,无法完整收集所有评论过的视频。

错误代码

def create_user_summary(video_reviews):
    summary = {}
    for video in video_reviews:
        for person in video["reviews"]:
            user = person["name"]
            video_name = []
            if person["name"] == user:
                video_name.append(video["name"])
                summary[user] = video_name
    return summary

错误输出

{'Jeb': ['All Fail'], 'Samantha': ['Runaway Nintendo'], 'Crystal': ['All Fail'], 'Frank': ['All Fail'], 'Bill': ['Runaway Nintendo'], 'Sarah': ['Runaway Nintendo']}

期望输出

{
    "Jeb": ["Cats doing nothing", "All Fail"],
    "Samantha": ["Cats doing nothing","Runaway Nintendo"],
    "Crystal": ["Cats doing nothing", "All Fail"],
    "Frank": ["All Fail"],
    "Bill": ["Runaway Nintendo"],
    "Sarah": ["Runaway Nintendo"],
}

问题原因

每次循环都会新建空列表video_name = [],并且通过summary[user] = video_name直接覆盖该用户已有的列表值。这导致用户每次评论新视频时,之前收集的视频列表都会被替换成仅包含当前视频的新列表,最终只保留最后一条评论对应的视频。

修正方案

需要判断用户是否已存在于汇总字典中:若不存在则创建空列表,若已存在则直接在已有列表中追加当前视频。

修正后代码(基础版)

def create_user_summary(video_reviews):
    summary = {}
    for video in video_reviews:
        current_video = video["name"]
        for person in video["reviews"]:
            user = person["name"]
            # 若用户不在字典中,初始化空列表
            if user not in summary:
                summary[user] = []
            # 追加当前视频到用户的视频列表
            summary[user].append(current_video)
    return summary

简化版(使用dict.setdefault())

setdefault()方法会检查键是否存在:存在则返回对应值,不存在则设置默认值并返回,可简化代码:

def create_user_summary(video_reviews):
    summary = {}
    for video in video_reviews:
        current_video = video["name"]
        for person in video["reviews"]:
            user = person["name"]
            summary.setdefault(user, []).append(current_video)
    return summary

运行修正后的代码,即可得到符合期望的汇总字典,完整保留每个用户评论过的所有视频。

内容的提问来源于stack exchange,提问作者Evey Bian

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 15:10:26