如何将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
相关产品推荐
相关产品推荐

