Python如何将含列表的嵌套字典转换为扁平化键值对
你原有实现只覆盖了嵌套字典的场景,新增列表类型的判断分支即可满足需求,遍历列表时将元素下标转为字符串作为键的一部分拼接,修改后的代码如下:
def flat_dict_helper(prepend, item): # 前缀拼接逻辑 if len(prepend) > 0: prepend = prepend + "_" # 处理字典类型 if isinstance(item, dict): for k, v in item.items(): yield from flat_dict_helper(prepend + str(k), v) # 处理列表类型 elif isinstance(item, list): for idx, v in enumerate(item): yield from flat_dict_helper(prepend + str(idx), v) # 基础类型直接返回键值对 else: yield (prepend, item) def flat_dict(d): return dict(flat_dict_helper("", d))
测试示例:
d = { "key1": "value1", "key2": { "key3": "value3", "key4": { "key5": "value5", "key6": [{"keys1": "value_keys1"}] } } } print(flat_dict(d))
运行输出和预期一致:
{ 'key1': 'value1', 'key2_key3': 'value3', 'key2_key4_key5': 'value5', 'key2_key4_key6_0_keys1': 'value_keys1' }
内容的提问来源于stack exchange,提问作者Rodrigo
相关产品推荐
相关产品推荐

