gpt4 book ai didi

python - 如何在字典中创建可能组合的列表?

转载 作者:行者123 更新时间:2023-11-28 20:38:10 24 4
gpt4 key购买 nike

我有一个 python 字典如下:

test = {"a": value_of_a,"b": value_of_b, "c": value_of_c}

其中 value_of_a, value_of_b, value_of_c 都是可以取 3 个值的变量:

  • value_of_a

    为 1,2 或 3
  • value_of_b 的“a”、“b”或“c”,

  • 45,180,250 for vaulue_of_c

我想创建一个字典列表,其中每个字典包含这些值的一个组合。例如 dict 可以如下所示:

test1 = {"a" : 2, "b" : "a", "c" : 45 }
test2 = {"a" : 3, "b" : "a", "c" : 45 }

等等……

我不知道如何继续解决这个问题?

最佳答案

享受:

import itertools


def iterate_values(S):
keys, values = zip(*S.items())

for row in itertools.product(*values):
yield dict(zip(keys, row))


S = {"a": [1, 2, 3], "b": ["a", "b", "c"], "c": [45, 180, 250]}

for d in iterate_values(S):
print(d)

结果:

{'a': 1, 'c': 45, 'b': 'a'}
{'a': 1, 'c': 45, 'b': 'b'}
{'a': 1, 'c': 45, 'b': 'c'}
{'a': 1, 'c': 180, 'b': 'a'}
{'a': 1, 'c': 180, 'b': 'b'}
{'a': 1, 'c': 180, 'b': 'c'}
{'a': 1, 'c': 250, 'b': 'a'}
{'a': 1, 'c': 250, 'b': 'b'}
{'a': 1, 'c': 250, 'b': 'c'}
{'a': 2, 'c': 45, 'b': 'a'}
{'a': 2, 'c': 45, 'b': 'b'}
{'a': 2, 'c': 45, 'b': 'c'}
{'a': 2, 'c': 180, 'b': 'a'}
{'a': 2, 'c': 180, 'b': 'b'}
{'a': 2, 'c': 180, 'b': 'c'}
{'a': 2, 'c': 250, 'b': 'a'}
{'a': 2, 'c': 250, 'b': 'b'}
{'a': 2, 'c': 250, 'b': 'c'}
{'a': 3, 'c': 45, 'b': 'a'}
{'a': 3, 'c': 45, 'b': 'b'}
{'a': 3, 'c': 45, 'b': 'c'}
{'a': 3, 'c': 180, 'b': 'a'}
{'a': 3, 'c': 180, 'b': 'b'}
{'a': 3, 'c': 180, 'b': 'c'}
{'a': 3, 'c': 250, 'b': 'a'}
{'a': 3, 'c': 250, 'b': 'b'}
{'a': 3, 'c': 250, 'b': 'c'}

我将其实现为生成器,因为它可以节省您的内存。如果您需要一个确切的列表,您可以这样做:

lst = list(iterate_values(S))

关于python - 如何在字典中创建可能组合的列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41523543/

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