Combination of nested dictionaries with arbitrary lengths in python(在Python语言中组合任意长度的嵌套词典)
问题描述
我正在寻找一个函数,该函数将接受嵌套字典,并生成值的组合/乘积。 我的查询与此处指定的问题类似,但我似乎无法调整答案以满足我的需求: Cartesian product of nested dictionaries of lists
我希望有这样的输入:
生成如下输出:
在本例中,输出是一个人可以占据的"状态"列表
- 列表(输入)的任意两个元素不能在返回列表(输出)的同一元素中,例如某个人不能同时在国家1和国家2
- 字典(输入)中的所有键应该在列表(输出)的同一元素中返回,例如某人在国家/地区1并且也处于Health_State。如果健康状态为‘乳腺癌’,则他们也处于阶段1或阶段2
我可以设想一种需要大量for循环的解决方案,检查元素是字典、列表还是两者都不是,但这似乎效率很低,特别是对于深度嵌套的字典。我怀疑有一个更好的解决方案,使用itertools.product
和递归?
推荐答案
您可以对itertools.product
使用递归:
输出:
以上代码的输出生成一个词典列表,但您需要的输出反映了一个词典列表(list[list[dict]]
),因此可以进行最终转换:
输出:
这篇关于在Python语言中组合任意长度的嵌套词典的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!