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

如何将含重复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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 04:10:20