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

Python 3.8列表索引类型错误求助:提取合并字典中的游戏名称

解决字典合并后提取游戏名及统计次数的问题

首先来说你遇到的报错原因:你在循环里写了datalist[i]['name'],但这里的i已经是列表里的单个字典(比如yourdict2),不是整数索引,所以Python会报错说列表不能用字典当索引。而且从你打印的z结构来看,每个子字典里还有一层键(比如'50'),所以得先拿到这层键对应的value才能取到name。

第一步:正确提取所有游戏名称

先修改你的遍历代码,改成这样:

z = {}
z['games'] = [yourdict2, yourdict3]
datalist = z['games']

# 提取所有游戏名称
game_names = []
for game_dict in datalist:
    # 遍历每个子字典里的value(因为每个子字典的键是类似'50'这种,我们需要它对应的内容)
    for item in game_dict.values():
        game_names.append(item['name'])
        print(item['name'])

这样就能正确打印每个游戏的name字段,同时把所有名称存到game_names列表里,方便后续统计。

第二步:统计游戏名称的出现次数

要统计次数,Python的collections.Counter是最方便的工具,不用自己手动计数:

from collections import Counter

# 统计次数
name_counts = Counter(game_names)

# 打印结果,比如:
print("游戏名称出现次数:")
for name, count in name_counts.items():
    print(f"{name}: {count}次")

额外说明:关于字典合并的小优化

你用列表存两个字典的方式确实能避免键重复覆盖,这思路是对的。如果之后还有更多字典要合并,直接用z['games'].append(yourdict4)就可以,很灵活。

如果你的子字典结构固定(每个子字典只有一个键值对,比如只有'50'这种单个键),也可以简化提取步骤,比如用next(iter(game_dict.values()))直接拿到唯一的value,不用循环:

for game_dict in datalist:
    game_item = next(iter(game_dict.values()))
    game_names.append(game_item['name'])

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 00:42:28