python - python展平/展开列表中的字典列表
问题描述
我在列表中有字典列表,如下所示
A = [[{'a': '1', 'b': '2'}],[{...}],[{...}],[],[],[{'x': '25', 'z':'26'}]]
列表“A”中的 7 个字典列表(来自 7 天的数据) python 在 def 函数中使用 for 循环
A 中的一些字典列表有数据,有些没有
我想像这样展平/展开到不同的列表 B
B = [{'a': '1', 'b': '2', ..., 'x': '25', 'z':'26'}]
作为字典列表。
我试过(有相应的进口):
B = (list(itertools.chain(*A)))
B = [item for sublist in A for item in sublist]
B = [dict(chain(*map(dict.items, d.values()))) for d in A]
结果,以上 3 种展平/展开方法给了我一个空列表 []。我想这样做是因为只有一个列表适合我在 html 中的 ajax 附加格式,该格式也将应用于月、季度、半年和年的数据集。(我还需要在带有 for 循环的列表用于创建此列表)
我使用上述方法错了吗?
展平/展开是否必须遵循列表结构的每个无组织列表?
最好不要通过在 def 函数中使用 for 循环从 python更改 for 循环来创建像列表 A 这样的无组织列表?
编辑:我在问题中分离了未展平列表(A)和展平列表(B)。
解决方案
您可以使用itertools.chain()
和听写理解:
A = [[{1:1, 2:2}], [], [{3:3}], [{8:8}], [], [], [{9:9}]]
b = itertools.chain(*A)
{k:v for x in b for k,v in x.items()}
预期结果:
{1: 1, 2: 2, 3: 3, 8: 8, 9: 9}
关于 itertools 的更多信息:https ://www.geeksforgeeks.org/python-itertools/
有关 dict 理解的更多信息:https ://www.programiz.com/python-programming/dictionary-comprehension
推荐阅读
- windows - 有没有办法改变 PrtScr 键执行的操作?
- javascript - 如何为表单中的不同选项组合生成不同的表格 [HTML/JS]
- angular - 更新 formArray 而不发出 valueChanges
- php - 无法连接到登录页面的数据库(PHP,MYSQL)
- javascript - Axios - 参数 - 在引号“paramvalue”中传递参数值的问题
- laravel - Laravel 7 - 集合分页
- python - tkinter.TclError:无效的命令名称“.!canvas”
- nestjs - Typeorm - 转换响应
- java - 从 Kotlin 到 Java
- arrays - Matlab:仅对特定字符数组执行过程