Python创建列表组合

Python创建列表组合,python,combinations,Python,Combinations,我有一个包含元素和元素序列计数的字典。我想创建一个由这些元素组合而成的列表 范例 Input: dictElement = {"PA":2,"PB":2} Expected Output: [('PB0', 'PA0'), ('PB0', 'PA1'), ('PB1', 'PA0'), ('PB1', 'PA1')] 注意:字典的数字元素可以更改您没有指定字典的键在输出中的处理顺序。如果采用反向排序顺序,则可以使用itertools.product(): 演示: 你做什么了吗?字典没有订。

我有一个包含元素和元素序列计数的字典。我想创建一个由这些元素组合而成的列表

范例

Input: dictElement = {"PA":2,"PB":2}

Expected Output:
[('PB0', 'PA0'),
('PB0', 'PA1'),
('PB1', 'PA0'),
('PB1', 'PA1')]


注意:字典的数字元素可以更改

您没有指定字典的键在输出中的处理顺序。如果采用反向排序顺序,则可以使用
itertools.product()

演示:


你做什么了吗?字典没有订。您希望对键施加什么“顺序”?除此之外,这可以通过
itertools.product()
轻松实现<代码>产品(*(['{}{}'。格式(v,i)表示范围内的i(dictElement[v]),表示dictElement中的v))。对不起,我想保留订单如下example@KenNguyen:什么决定了顺序。您无法从字典中获得该顺序,因为该顺序不受保证,并且会随着插入、删除以及当前随机散列值启用散列随机化(在Python 3上默认情况下)而发生细微的更改。我遇到了错误:ValueError:zero length字段名format@KenNguyen:这意味着您正在使用Python 2.6;在格式化占位符中使用
0
1
{0}{1}
组合是否可以将其转换为列表列表?@KenNguyen只需在迭代器上调用
list()
Input: dictElement = {"PA":2,"PB":2,"PC":3}

Expected Output:
[('PC0', 'PB0', 'PA0'), 
('PC0', 'PB0', 'PA1'), 
('PC0', 'PB1', 'PA0'), 
('PC0', 'PB1', 'PA1'), 
('PC1', 'PB0', 'PA0'), 
('PC1', 'PB0', 'PA1'), 
('PC1', 'PB1', 'PA0'), 
('PC1', 'PB1', 'PA1'), 
('PC2', 'PB0', 'PA0'), 
('PC2', 'PB0', 'PA1'), 
('PC2', 'PB1', 'PA0'), 
('PC2', 'PB1', 'PA1')]
from itertools import product

combinations = product(*(['{0}{1}'.format(v, i) for i in range(dictElement[v])] 
                         for v in sorted(dictElement, reverse=True))
>>> from itertools import product
>>> dictElement = {"PA":2,"PB":2,"PC":3}
>>> combinations = product(*(['{0}{1}'.format(v, i) for i in range(dictElement[v])]
...                           for v in sorted(dictElement, reverse=True)))
>>> for combo in combinations:
...     print(combo)
...
('PC0', 'PB0', 'PA0')
('PC0', 'PB0', 'PA1')
('PC0', 'PB1', 'PA0')
('PC0', 'PB1', 'PA1')
('PC1', 'PB0', 'PA0')
('PC1', 'PB0', 'PA1')
('PC1', 'PB1', 'PA0')
('PC1', 'PB1', 'PA1')
('PC2', 'PB0', 'PA0')
('PC2', 'PB0', 'PA1')
('PC2', 'PB1', 'PA0')
('PC2', 'PB1', 'PA1')