【发布时间】:2016-09-07 16:16:45
【问题描述】:
我有一本包含元素和元素序列计数的字典。我想创建一个由这些元素组合而成的列表列表
例子
Input: dictElement = {"PA":2,"PB":2}
Expected Output:
[('PB0', 'PA0'),
('PB0', 'PA1'),
('PB1', 'PA0'),
('PB1', 'PA1')]
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')]
注意:字典的元素个数可以改变
【问题讨论】:
-
你做了什么
-
字典是无序的。您想对键强加什么“顺序”?
-
除此之外,这可以通过
itertools.product()轻松实现;product(*(['{}{}'.format(v, i) for i in range(dictElement[v])] for v in dictElement)). -
对不起,我想保持顺序作为例子
-
@KenNguyen:是什么决定了这个顺序。您无法从字典中获取该顺序,因为该顺序无法保证,并且会随着插入、删除以及是否启用哈希随机化(默认情况下在 Python 3 上)在当前随机哈希值上发生细微变化。
标签: python combinations