gpt4 book ai didi

Python递归设置值排列字典

转载 作者:太空宇宙 更新时间:2023-11-04 07:59:02 24 4
gpt4 key购买 nike

我正在尝试以递归方式获取字典的所有组合,但我不知道如何正确获取输出。本质上是深度优先搜索,它将输入保存在(键,值)元组或类似的东西中。任何帮助表示赞赏。谢谢/弗雷德

输入:

d = {"item1": {1, 2},
"item2": {3, 4},
"item3": {5, 6}}

输出:

"item1" 1
"item2" 3
"item3" 5
"item3" 6
"item2" 4
"item3" 5
"item3" 6
"item1" 2
"item2" 3
"item3" 5
"item3" 6
"item2" 4
"item3" 5
"item3" 6

编辑:烫发需要递归绘制。也许插图可以说明一点: enter image description here

树结构可行,但对我的目的来说不够通用,而且编辑起来很麻烦。

更新:目前我正在像这样对这些进行硬编码:

d = {"item1": {1, 2},
"item2": {3, 4},
"item3": {i for i in range(1, 5)}}

for k in d["item1"]:
print ("item1", k)
for j in d["item2"]:
print ("item2", j)
for i in d["item3"]:
print("item3", i)

递归发生的地方似乎很明显,但我仍然遇到麻烦。到目前为止,谢谢大家的所有建议!如果有任何区别,它也在 python3 中。

最佳答案

这将返回排列列表。

from itertools import product

perms = [[perm for perm in product([key], d[key]) for key in d]]

更新以防您正在寻找键值对的可能组合,总共有 18 个。

[print(prod) for prod in product(d, itertools.chain.from_iterable(d.values()))]

输出:

('item3', 5)
('item3', 6)
('item3', 1)
('item3', 2)
('item3', 3)
('item3', 4)
('item1', 5)
('item1', 6)
('item1', 1)
('item1', 2)
('item1', 3)
('item1', 4)
('item2', 5)
('item2', 6)
('item2', 1)
('item2', 2)
('item2', 3)
('item2', 4)

关于Python递归设置值排列字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43772448/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com