gpt4 book ai didi

python - 生成较大字典的排列的字典

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

我不知道我给出的标题是否很好地解释了我需要我的程序做什么。我将拥有以下形式的字典:

main_dictionary = {1: [ [a], [b], [c], ... ], 2: [ [a], [b], [c], ... ] , ... }

字典可以任意长,并且每个键可以有任意数量的选项。我需要该程序来测试该字典的每个排列。

sub_dictionary = {1: [a], 2: [a], ... }

test_program(sub_dictionary)

sub_dictionary = {1: [a], 2: [b], ... }

test_program(sub_dictionary)

最佳答案

这是使用itertools.product的一种方法。结果是“子词典”列表。

为了简单起见,我使用了整数列表作为值,但这可以替换为您选择的值。

from itertools import product

d = {1: [3, 4, 5], 2: [6, 7, 8]}

values = list(zip(*sorted(d.items())))[1]

res = [dict(enumerate(x, 1)) for x in product(*values)]

如果您需要单独测试每个字典,请使用生成器表达式并迭代它:

for item in (dict(enumerate(x, 1)) for x in product(*values)):
...

如果您有字符串键:

res = [dict(zip(sorted(d), x)) for x in product(*values)]

结果:

[{1: 3, 2: 6},
{1: 3, 2: 7},
{1: 3, 2: 8},
{1: 4, 2: 6},
{1: 4, 2: 7},
{1: 4, 2: 8},
{1: 5, 2: 6},
{1: 5, 2: 7},
{1: 5, 2: 8}]

关于python - 生成较大字典的排列的字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49525016/

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