python - Expand a dict containing list items into a list of dict pairs
问题描述
If I have a dictionary containing lists in one or more of its values:
data = {
'a':0,
'b':1,
'c':[0, 1, 2],
'pair':['one','two']
}
How can I get a list of dict tuples paired by pair
and iterating over c
, with all else remaining constant? E.g.
output = [
({
'a':0,
'b':1,
'c':0,
'pair':'one'
},
{
'a':0,
'b':1,
'c':0,
'pair':'two'
}),
({
'a':0,
'b':1,
'c':1,
'pair':'one'
},
...
]
解决方案
好吧,这感觉不是特别优雅,但您可以使用嵌套的 for 循环或列表推导:
output = []
for i in data['c']:
output.append(tuple({'a': 0, 'b': 1, 'c': i, 'pair': p} for p in data))
或者
output = [tuple({'a': 0, 'b': 1, 'c': i, 'pair': p} for p in data['pair']) for i in data['c']]
更简洁的解决方案可能会将组件 dict 的生成分离到一个函数中,如下所示:
def gen_output_dict(c, pair):
return {'a': 0, 'b': 1, 'c': c, 'pair': pair}
output = []
for i in data['c']:
output.append(tuple(gen_output_dict(i, p) for p in data['pair']))
推荐阅读
- javascript - interact.js - 拖放区域中可拖动项目的 trello 风格可滚动列表
- javascript - 从加载的 json 文件生成 HTML 表不起作用
- bash - 用于从 Maven assembly.xml 获取文件集的 outputDirectory 标记值的 Bash 脚本
- python - 在excel中循环n个数据并将其保存为Python中的嵌套循环
- cmake - CMake 在同一个项目中构建多个库
- docker - Al docker 图像退出 126 状态
- java - 如何将外部 jar 添加到 Webots?
- c# - 如何将单个类型的正确实例注入另一个类
- javascript - 如何在函数内部传递一个作为访问属性的参数
- c# - 如何使用重定向在 asp.net core 2.0 的新选项卡中打开链接