如何扁平化Python含多字典列表中的嵌套字典列表?求实现方法
实现列表结构转换的方法
当然可以实现这个转换,以下是两种适合新手的操作方法:
方法一:列表推导式(简洁写法)
先定义你的原始数据:
original_list = [ {'name': 'Jon', 'values': [{'value': 'Decent'}, {'value': 'Average'}]}, {'name': 'grunion', 'values': [{'value': 'Junk'}, {'value': 'Bad'}]}, {'name': 'Mark', 'values': [{'value': 'Excellent'}, {'value': 'Very good'}]} ]
用一行列表推导式完成转换:
converted_list = [ {'name': item['name'], 'values': [v['value'] for v in item['values']]} for item in original_list ]
解释:遍历原始列表中的每个字典item,保留name字段不变,同时把item['values']里的每个小字典提取出value值,组成新的字符串列表赋值给values字段。
方法二:for循环(直观易懂)
如果觉得列表推导式有点抽象,用普通循环一步步处理更清晰:
original_list = [ {'name': 'Jon', 'values': [{'value': 'Decent'}, {'value': 'Average'}]}, {'name': 'grunion', 'values': [{'value': 'Junk'}, {'value': 'Bad'}]}, {'name': 'Mark', 'values': [{'value': 'Excellent'}, {'value': 'Very good'}]} ] converted_list = [] # 遍历原始列表的每个元素 for item in original_list: # 创建新字典,先复制name字段 new_item = {'name': item['name']} # 处理values字段,逐个提取value值 new_values = [] for v in item['values']: new_values.append(v['value']) new_item['values'] = new_values # 将处理好的字典加入新列表 converted_list.append(new_item)
执行完上述代码后,converted_list就是你想要的目标结构,直接打印就能看到结果。
内容的提问来源于stack exchange,提问作者Istiyak Shaikh
相关产品推荐
相关产品推荐

