如何将含重复userID的Python字典转换为以userID为键的格式
Python字典格式转换:按userID整合分散数据
方法一:普通字典遍历实现
current_directory = { "key1": {"userID1": 5, "userID2": 1, "userID3": 5}, "key2": {"userID1": 13, "userID2": 24, "userID3": 0}, "key3": {"userID1": 14, "userID2": 12, "userID3": 3} } parsed_directory = {} # 遍历原字典的外层键和对应的用户字典 for outer_key, user_data in current_directory.items(): # 遍历每个用户ID和对应数值 for user_id, value in user_data.items(): # 如果用户ID还没在结果字典中,先创建空字典 if user_id not in parsed_directory: parsed_directory[user_id] = {} # 将外层键和数值存入该用户ID的子字典 parsed_directory[user_id][outer_key] = value print(parsed_directory)
方法二:用collections.defaultdict简化代码
如果不想手动判断用户ID是否存在,可以用defaultdict自动初始化空字典,代码更简洁:
from collections import defaultdict current_directory = { "key1": {"userID1": 5, "userID2": 1, "userID3": 5}, "key2": {"userID1": 13, "userID2": 24, "userID3": 0}, "key3": {"userID1": 14, "userID2": 12, "userID3": 3} } # 初始化默认值为字典的defaultdict parsed_directory = defaultdict(dict) for outer_key, user_data in current_directory.items(): for user_id, value in user_data.items(): parsed_directory[user_id][outer_key] = value # 可选:将defaultdict转为普通字典(如果不需要defaultdict特性) parsed_directory = dict(parsed_directory) print(parsed_directory)
两种方法执行后都会得到你期望的结构:
{ "userID1": {"key1": 5, "key2": 13, "key3": 14}, "userID2": {"key1": 1, "key2": 24, "key3": 12}, "userID3": {"key1": 5, "key2": 0, "key3": 3} }
内容的提问来源于stack exchange,提问作者Md Soft
相关产品推荐
相关产品推荐

