Python如何将元组列表转换为指定键结构的字典列表
实现方法
你可以通过「预定义顺序键列表 + 遍历配对」的方式完成转换,步骤如下:
- 先按要求的映射顺序,把7个字典键存成固定列表,保证和元组元素位置一一对应
- 遍历原始元组列表,将每个元组的所有元素统一转为字符串类型
- 用
zip()将键和转换后的值按位置配对,生成单个字典,最终收集为列表即可
完整代码
# 按映射顺序定义字典键 field_keys = ["Rank", "ChampionName", "ChampionImage", "Tier", "Win Rate", "Pick Rate", "Ban Rate"] # 原始元组列表 tuples_variable = [ (1, 'Singed', 'https://opgg-static.akamaized.net/images/lol/champion/Singed.png', 0, '55.76%', '3.58%', '3.53%'), (2, 'Ahri', 'https://opgg-static.akamaized.net/images/lol/champion/Ahri.png', 1, '50.71%', '16.58%', '18.71%') ] # 执行转换 result = [] for item_tuple in tuples_variable: # 元组元素全部转字符串,和键配对生成字典 current_dict = dict(zip(field_keys, [str(value) for value in item_tuple])) result.append(current_dict)
如果偏好简洁写法,也可以直接用列表推导式完成转换逻辑:
result = [dict(zip(field_keys, map(str, item_tuple))) for item_tuple in tuples_variable]
结果验证
执行以下代码打印结果,可以看到完全符合要求的结构:
import json print(json.dumps(result, indent=2, ensure_ascii=False))
输出内容:
[ { "Rank": "1", "ChampionName": "Singed", "ChampionImage": "https://opgg-static.akamaized.net/images/lol/champion/Singed.png", "Tier": "0", "Win Rate": "55.76%", "Pick Rate": "3.58%", "Ban Rate": "3.53%" }, { "Rank": "2", "ChampionName": "Ahri", "ChampionImage": "https://opgg-static.akamaized.net/images/lol/champion/Ahri.png", "Tier": "1", "Win Rate": "50.71%", "Pick Rate": "16.58%", "Ban Rate": "18.71%" } ]
说明:用
zip做顺序配对的方式扩展性更好,后续如果需要调整字段顺序、新增/删除字段,只需要修改field_keys列表即可,不需要改动转换逻辑。所有字段统一走str()类型转换,原本就是字符串类型的字段不会发生内容变化,数字类型的Rank、Tier会自动转为要求的字符串格式。
内容的提问来源于stack exchange,提问作者Brilliant Help
相关产品推荐
相关产品推荐

