[英]Python: all possible combinations of list items Set
There is a dictionary 有字典
ages = {
"45-64": 0.025671085927991368,
"65+": 0.0018149553095834115,
"35-44": 0.040190728404658656,
"18-24": 0.37733412203543515,
"13-17": 0.35014384408604765,
"25-34": 0.20484526423628374
}
From which I need to take the keys (the list of age groups) "45-64", "65+", "35-44", "18-24", "13-17", "25-34". 我需要从中获取键(年龄组列表)“ 45-64”,“ 65 +”,“ 35-44”,“ 18-24”,“ 13-17”,“ 25-34”。 How can get from it all possible unique combinations whose elements are separated by the age line: Like this: 如何从中获得所有可能的独特组合,其元素由年龄线分隔:像这样:
age18-24age35-44
age13-17age25-34age35-44age65-
age18-24age35-44
age13-17age25-34age45-54age65-
age13-17age18-24age25-34age55-64age65-
....
....
Sorting order is not important, the most important is uniqueness. 排序顺序并不重要,最重要的是唯一性。 Those. 那些。 age18-24age35-44 and age35-44age18-24 is a duplicate, because the sum of their values will be the same. age18-24age35-44和age35-44age18-24是重复项,因为它们的值之和是相同的。
from itertools import combinations
from pprint import pprint
pprint([''.join(map('age'.__add__, a)) for i in range(2, len(ages) + 1) for a in combinations(ages, i)])
This outputs: 输出:
['age45-64age65+',
'age45-64age35-44',
'age45-64age18-24',
'age45-64age13-17',
'age45-64age25-34',
'age65+age35-44',
'age65+age18-24',
'age65+age13-17',
'age65+age25-34',
'age35-44age18-24',
'age35-44age13-17',
'age35-44age25-34',
'age18-24age13-17',
'age18-24age25-34',
'age13-17age25-34',
'age45-64age65+age35-44',
'age45-64age65+age18-24',
'age45-64age65+age13-17',
'age45-64age65+age25-34',
'age45-64age35-44age18-24',
'age45-64age35-44age13-17',
'age45-64age35-44age25-34',
'age45-64age18-24age13-17',
'age45-64age18-24age25-34',
'age45-64age13-17age25-34',
'age65+age35-44age18-24',
'age65+age35-44age13-17',
'age65+age35-44age25-34',
'age65+age18-24age13-17',
'age65+age18-24age25-34',
'age65+age13-17age25-34',
'age35-44age18-24age13-17',
'age35-44age18-24age25-34',
'age35-44age13-17age25-34',
'age18-24age13-17age25-34',
'age45-64age65+age35-44age18-24',
'age45-64age65+age35-44age13-17',
'age45-64age65+age35-44age25-34',
'age45-64age65+age18-24age13-17',
'age45-64age65+age18-24age25-34',
'age45-64age65+age13-17age25-34',
'age45-64age35-44age18-24age13-17',
'age45-64age35-44age18-24age25-34',
'age45-64age35-44age13-17age25-34',
'age45-64age18-24age13-17age25-34',
'age65+age35-44age18-24age13-17',
'age65+age35-44age18-24age25-34',
'age65+age35-44age13-17age25-34',
'age65+age18-24age13-17age25-34',
'age35-44age18-24age13-17age25-34',
'age45-64age65+age35-44age18-24age13-17',
'age45-64age65+age35-44age18-24age25-34',
'age45-64age65+age35-44age13-17age25-34',
'age45-64age65+age18-24age13-17age25-34',
'age45-64age35-44age18-24age13-17age25-34',
'age65+age35-44age18-24age13-17age25-34',
'age45-64age65+age35-44age18-24age13-17age25-34']
You can combine itertools.combinations
and itertools.product
to do this 您可以结合使用itertools.combinations
和itertools.product
来执行此操作
from itertools import combinations, chain
l = ages.keys()
l2 = list(chain(*[['age'.join(('',)+c) for c in combinations(l,i)] for i in range(2, len(l))]))
from pprint import pprint
pprint(l2)
Output 输出量
['age45-64age65+',
'age45-64age35-44',
'age45-64age18-24',
'age45-64age13-17',
'age45-64age25-34',
'age65+age35-44',
'age65+age18-24',
'age65+age13-17',
'age65+age25-34',
'age35-44age18-24',
'age35-44age13-17',
'age35-44age25-34',
'age18-24age13-17',
'age18-24age25-34',
'age13-17age25-34',
'age45-64age65+age35-44',
'age45-64age65+age18-24',
'age45-64age65+age13-17',
'age45-64age65+age25-34',
'age45-64age35-44age18-24',
'age45-64age35-44age13-17',
'age45-64age35-44age25-34',
'age45-64age18-24age13-17',
'age45-64age18-24age25-34',
'age45-64age13-17age25-34',
'age65+age35-44age18-24',
'age65+age35-44age13-17',
'age65+age35-44age25-34',
'age65+age18-24age13-17',
'age65+age18-24age25-34',
'age65+age13-17age25-34',
'age35-44age18-24age13-17',
'age35-44age18-24age25-34',
'age35-44age13-17age25-34',
'age18-24age13-17age25-34',
'age45-64age65+age35-44age18-24',
'age45-64age65+age35-44age13-17',
'age45-64age65+age35-44age25-34',
'age45-64age65+age18-24age13-17',
'age45-64age65+age18-24age25-34',
'age45-64age65+age13-17age25-34',
'age45-64age35-44age18-24age13-17',
'age45-64age35-44age18-24age25-34',
'age45-64age35-44age13-17age25-34',
'age45-64age18-24age13-17age25-34',
'age65+age35-44age18-24age13-17',
'age65+age35-44age18-24age25-34',
'age65+age35-44age13-17age25-34',
'age65+age18-24age13-17age25-34',
'age35-44age18-24age13-17age25-34',
'age45-64age65+age35-44age18-24age13-17',
'age45-64age65+age35-44age18-24age25-34',
'age45-64age65+age35-44age13-17age25-34',
'age45-64age65+age18-24age13-17age25-34',
'age45-64age35-44age18-24age13-17age25-34',
'age65+age35-44age18-24age13-17age25-34']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.