我想從這樣的字典生成所有配置:
dict = {
"a": [1,2,3],
"b":{
"b1":[True, False],
"b2":[0],
}
}
需要列舉串列屬性。輸出是這樣的:
config = [{
"a": 1,
"b":{
"b1":True,
"b2":0,
},
{
"a": 2,
"b":{
"b1":True,
"b2":0,
},
...
]
我怎樣才能做到這一點?
我認為遞回是個好主意,但我不知道如何使用它
uj5u.com熱心網友回復:
為此使用遞回沒有任何價值。一個簡單的串列理解就足夠了:
_dict = {
"a": [1, 2, 3],
"b": {
"b1": [True, False],
"b2": [0]
}
}
config = [{'a': k, 'b': {'b1': True, 'b2': 0}} for k in _dict['a']]
print(config)
輸出:
[{'a': 1, 'b': {'b1': True, 'b2': 0}}, {'a': 2, 'b': {'b1': True, 'b2': 0}}, {'a': 3, 'b': {'b1': True, 'b2': 0}}]
uj5u.com熱心網友回復:
def merge_dicts(*dict_args):
result = {}
for dictionary in dict_args:
result.update(dictionary)
return result
def dict2combinations(d):
for k, v in d.items():
if isinstance(v, dict):
d[k] = dict2combinations(v)
values = [[{k: i} for i in v] for k, v in d.items()]
return [merge_dicts(*i) for i in product(*values)]
print(dict2combinations(config))
輸出:
[{'a': 1, 'b': {'b1': True, 'b2': 0}}, {'a': 1, 'b': {'b1': False, 'b2': 0}}, {'a': 2, 'b': {'b1': True, 'b2': 0}}, {'a': 2, 'b': {'b1': False, 'b2': 0}}, {'a': 3, 'b': {'b1': True, 'b2': 0}}, {'a': 3, 'b': {'b1': False, 'b2': 0}}]
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/537114.html
標籤:Python算法递归配置
