我有一本混合了字符串和列表的字典:
sample_dict = {'numbers': [1, 2, 3], 'ref': 'some text'}
我们的目标是将其合并并“扁平化”为一组单独的词典,然后通过芹菜作为一组计划任务的参数:
# end goal:
[{'numbers': 1, 'ref': 'some text'},
{'numbers': 2, 'ref': 'some text'},
{'numbers': 3, 'ref': 'some text'}]
我试着用一个传统的循环来编写它,以保持代码的简单性,以便以后进行修改或修复错误,但是我无法找到一种能够访问所有必需的嵌套变量的方法
结果是使用了几个相对复杂的列表理解:
raw_vals = [[(i,v)] if isinstance(v,str) else ([(i,b) for b in v]) for i,v in sample_dict.items()]
end_goal = [dict(i) for i in product(*raw_vals)]
因此,问题是:使用标准循环或类似循环,是否有一种更详细但可能不那么神秘的方法来获得相同的结果?我知道这可能会引起关于可读性和LOC的争论,但如果可以的话,试着忽略这一点
我建议把条件从第一项中去掉:
那么理解就是地图
我还建议测试值是否是列表而不是字符串,因为这将允许值是列表以外的任何类型,并且不会被迭代。这也允许将列表的子类型视为列表
要么你的问题中遗漏了什么,要么你忽略了显而易见的问题:
相关问题 更多 >
编程相关推荐