Python如何程序化将JSON内不同用户的评分按独立数组打印输出
问题根因
原代码的逻辑是将所有用户的评分统一追加到同一个全局列表rating中,未按用户维度做拆分,因此最终只会输出一个合并了全量评分的大数组,无法满足按用户单独输出评分数组的需求。
实现方案
无需手动为每个用户单独创建数组,只需在遍历JSON的每个用户对象时,为当前用户生成独立的评分列表,遍历完该用户的所有评分项后直接打印该列表即可,后续新增任意数量的用户都能自动适配,无需额外修改代码。
修正后可直接运行的完整代码
原代码缺少json模块导入,修正后代码如下:
import json with open('/content/user_data.json') as f: js = json.load(f) # 遍历每个用户的评分块 for user_rating_block in js['Rating']: # 为当前用户创建独立的评分列表 current_user_ratings = [] # 提取当前用户的所有评分 for rate in user_rating_block['rating']: current_user_ratings.append(rate['rating']) # 打印当前用户的独立评分列表 print(current_user_ratings)
运行输出效果
执行上述代码后,输出和你预期的效果完全一致:
['4', '2', '5'] ['1', '3'] ['5', '2', '5']
精简写法
如果偏好更简洁的代码风格,可以用列表推导式简化逻辑,无需手动写循环和append操作,效果完全一致:
import json with open('/content/user_data.json') as f: js = json.load(f) for user_rating_block in js['Rating']: print([rate['rating'] for rate in user_rating_block['rating']])
注:精简写法省略了临时列表变量,直接在
内容的提问来源于stack exchange,提问作者JsBoon
相关产品推荐
相关产品推荐

