如何用Python从含字典的嵌套列表中提取目标列表
如何用Python提取双层嵌套列表中的单层列表
你有一个双层嵌套的列表结构(外层是一个列表,里面仅包含一个目标列表),示例如下:
[[{'stat': 'Ok', 'time': '22-12-2022 15:25:00', 'ssboe': '1671702900', 'into': '332.40', 'inth': '332.80', 'intl': '332.00', 'intc': '332.45', 'intvwap': '332.30', 'intv': '140828', 'intoi': '0', 'v': '6583955', 'oi': '0'}, {'stat': 'Ok', 'time': '22-12-2022 15:20:00', 'ssboe': '1671702600', 'into': '332.30', 'inth': '332.45', 'intl': '332.25', 'intc': '332.35', 'intvwap': '332.23', 'intv': '117775', 'intoi': '0', 'v': '6443127', 'oi': '0'}]]
需要将其转换为单层的目标列表:
[{'stat': 'Ok', 'time': '22-12-2022 15:25:00', 'ssboe': '1671702900', 'into': '332.40', 'inth': '332.80', 'intl': '332.00', 'intc': '332.45', 'intvwap': '332.30', 'intv': '140828', 'intoi': '0', 'v': '6583955', 'oi': '0'}, {'stat': 'Ok', 'time': '22-12-2022 15:20:00', 'ssboe': '1671702600', 'into': '332.30', 'inth': '332.45', 'intl': '332.25', 'intc': '332.35', 'intvwap': '332.23', 'intv': '117775', 'intoi': '0', 'v': '6443127', 'oi': '0'}]
方法1:直接索引取值
这是最直观的方法,因为外层列表只有一个元素(即目标列表),直接通过索引[0]提取:
nested_list = [[{'stat': 'Ok', 'time': '22-12-2022 15:25:00', 'ssboe': '1671702900', 'into': '332.40', 'inth': '332.80', 'intl': '332.00', 'intc': '332.45', 'intvwap': '332.30', 'intv': '140828', 'intoi': '0', 'v': '6583955', 'oi': '0'}, {'stat': 'Ok', 'time': '22-12-2022 15:20:00', 'ssboe': '1671702600', 'into': '332.30', 'inth': '332.45', 'intl': '332.25', 'intc': '332.35', 'intvwap': '332.23', 'intv': '117775', 'intoi': '0', 'v': '6443127', 'oi': '0'}]] target_list = nested_list[0] print(target_list)
方法2:解包外层列表
利用Python的解包语法,直接取出外层列表的唯一元素:
nested_list = [[{'stat': 'Ok', 'time': '22-12-2022 15:25:00', 'ssboe': '1671702900', 'into': '332.40', 'inth': '332.80', 'intl': '332.00', 'intc': '332.45', 'intvwap': '332.30', 'intv': '140828', 'intoi': '0', 'v': '6583955', 'oi': '0'}, {'stat': 'Ok', 'time': '22-12-2022 15:20:00', 'ssboe': '1671702600', 'into': '332.30', 'inth': '332.45', 'intl': '332.25', 'intc': '332.35', 'intvwap': '332.23', 'intv': '117775', 'intoi': '0', 'v': '6443127', 'oi': '0'}]] # 注意逗号,确保解包单个元素 target_list, = nested_list print(target_list)
也可以用*解包:
*target_list, = nested_list # 或者简化为 target_list = *nested_list,
方法3:列表推导式(扩展场景适用)
如果不确定外层列表是否只有一个元素,或者需要合并所有内层列表的元素,可使用列表推导式:
nested_list = [[{'stat': 'Ok', 'time': '22-12-2022 15:25:00', 'ssboe': '1671702900', 'into': '332.40', 'inth': '332.80', 'intl': '332.00', 'intc': '332.45', 'intvwap': '332.30', 'intv': '140828', 'intoi': '0', 'v': '6583955', 'oi': '0'}, {'stat': 'Ok', 'time': '22-12-2022 15:20:00', 'ssboe': '1671702600', 'into': '332.30', 'inth': '332.45', 'intl': '332.25', 'intc': '332.35', 'intvwap': '332.23', 'intv': '117775', 'intoi': '0', 'v': '6443127', 'oi': '0'}]] # 提取所有内层列表的元素合并 target_list = [item for sublist in nested_list for item in sublist] # 若明确外层只有一个子列表,直接取第一个即可 target_list = nested_list[0]
内容的提问来源于stack exchange,提问作者Arun_K_Bhaskar
相关产品推荐
相关产品推荐

