Python筛选JSON数据集匹配关键词条目返回空列表问题排查
代码返回空列表问题修复
你的代码存在4处逻辑/语法问题,是导致返回空列表的原因,逐一修正即可:
- 条件判断写法完全错误:
if dict in ['name'] == 'dagger'触发了Python的链式比较规则,实际等价于(dict in ['name']) and (['name'] == 'dagger'),后半段判断永远为假,因此不会有任何条目被加入结果列表。要获取字典中name字段的值,应使用[键名]索引取值的写法。 - 缩进位置错误:
- 结果列表
wpn_list的初始化、遍历数据集的for循环、最终的print和return语句缩进层级混乱:当前return写在for循环内部,第一次循环结束就会直接终止函数返回,根本不会遍历完所有数据 - 即使第一个条目匹配成功,你写的
wpn_list.append(data)是把整个JSON全量数据追加进结果,而非当前匹配到的单个武器条目
- 结果列表
- 命名不规范:不要用
dict作为循环变量名,这是Python内置的字典类型关键字,会覆盖内置方法,建议替换为weapon这类语义化名称
修正后的完整代码:
import json def wpn_dagger(): wpn_list = [] with open('DSweapons.json', encoding='utf-8') as f: weapon_data = json.load(f) for weapon in weapon_data: # 用.get取值避免缺少name字段时抛出KeyError if weapon.get('name') == 'dagger': wpn_list.append(weapon) print(wpn_list) return wpn_list
如果你需要做模糊匹配(比如名称包含dagger即命中,而非必须完全等于dagger),可以把判断条件替换为
if 'dagger' in weapon.get('name', '').lower(),同时兼容大小写不一致的情况。
内容的提问来源于stack exchange,提问作者Raze
相关产品推荐
相关产品推荐

