如果我有一本字典:
d={
's':['a','b','c'],
'v':['d','e'],
'r':['g','h','i'],}
(可以有任意数量的键)
我如何输出所有成对组合的列表,即
['adg','adh', 'adi', 'aeg', 'aeh', 'aei', 'bdg', 'bdh', 'bdi', 'beg', 'beh', 'bei', 'cdg', 'cdh', 'cdi', 'ceg', 'ceh', 'cei']
我用过:
l=list()
temp=''
for i in range(len(d['s'])):
for j in range(len(d['v'])):
for k in range(len(d['r'])):
temp=d['s'][i]+d['v'][j]+d['r'][k]
print(temp)
l.append(temp)
但我需要使其对于任意数量的键通用。
谢谢
最佳答案
使用itertools.product
和列表理解中的 str.join
:
from itertools import product
out = [''.join(p) for p in product(*d.values())]
输出:
['adg', 'adh', 'adi', 'aeg', 'aeh', 'aei',
'bdg', 'bdh', 'bdi', 'beg', 'beh', 'bei',
'cdg', 'cdh', 'cdi', 'ceg', 'ceh', 'cei']
关于Python字典逐点输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73346776/