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

如何将Python字典中单元素list类型的值转换为普通非list值

解决方案

通用递归实现

该方法不限字典嵌套层数,只要值为单元素列表就会自动解包,兼容性更强,也不会误改多元素列表或其他类型的值:

def unwrap_single_list(obj):
    # 处理嵌套字典
    if isinstance(obj, dict):
        return {k: unwrap_single_list(v) for k, v in obj.items()}
    # 处理单元素列表,直接返回内部值
    elif isinstance(obj, list) and len(obj) == 1:
        return obj[0]
    # 其他类型直接返回原值
    else:
        return obj

使用方法如下:

# 替换为你自己的原始字典即可
original_dict = {
    1: {'A': { 1: [5], 16: [5], 17: [4],
               20: [9], 22: [5], 26: [4],
               33: [2], 34: [4], 42: [2],
               47: [4], 72: [4], 80: [2]}},
    2: {"A": {}, "B": {}, "C":{}},
    3: {"A": {}, "B": {}, "C":{}}
}

processed_dict = unwrap_single_list(original_dict)

固定结构的循环实现

如果你确认字典结构固定为「第一层键为1/2/3、第二层键为A/B/C、第三层才是单元素列表值」,也可以用更简单的嵌套循环实现:

processed_dict = {}
for level1_key, level1_val in original_dict.items():
    processed_dict[level1_key] = {}
    for level2_key, level2_val in level1_val.items():
        processed_dict[level1_key][level2_key] = {k: v[0] for k, v in level2_val.items()}

内容的提问来源于stack exchange,提问作者jaxan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 22:15:03