如何输出字典值的排列

我有一个包含n个键的字典,其中n至少为10。对于每个键n,它的值是一个元素列表,此列表的大小是可变的。我希望能够产生所有排列。因此,输出将是所有唯一的n长度序列(对于n个键)。我将给出一个简单的,人为的示例来说明目标。因此,想象一下该字典看起来像{'key1': ['a','b'],'key2': ['1','2'],'key3' :['*','!']}。因此,输出将是(保留键的原始顺序-[key1,key2,key3]:

['a','1','*']
['a','!']
['a','2','!']
['b','*']
['b','!']

同样,在我的情况下,键的数量和每个值的长度会大得多,但这只是为了说明目标。希望能获得有关此操作的帮助,因为通常我会使用for循环,但是考虑大量可变的for循环是不可行的。谢谢!

lynch123 回答:如何输出字典值的排列

尝试一下:

import itertools

d = {'key1': ['a','b'],'key2': ['1','2'],'key3' :['*','!']}
iter = itertools.product(*d.values())

这给您一个迭代器。如果要将其扩展为列表,请使用:

list(iter)

产生:

[('a','1','*'),('a','!'),'2',('b','!')]

请注意,各个条目都是元组,可能适合您想要的元组,但是如果需要,它们可以轻松转换为列表。

本文链接:https://www.f2er.com/3120722.html

大家都在问