有一本字典
ages = {
"45-64": 0.025671085927991368,
"65+": 0.0018149553095834115,
"35-44": 0.040190728404658656,
"18-24": 0.37733412203543515,
"13-17": 0.35014384408604765,
"25-34": 0.20484526423628374
}
我需要从中获取密钥(年龄组列表)“ 45-64”,“ 65 +”,“ 35-44”,“ 18-24”,“ 13-17”,“ 25- 34“。如何从中获得所有可能的唯一组合,其元素由年龄线分开: 像这样:
age18-24age35-44
age13-17age25-34age35-44age65-
age18-24age35-44
age13-17age25-34age45-54age65-
age13-17age18-24age25-34age55-64age65-
....
....
排序顺序并不重要,最重要的是唯一性。那些。 age18-24age35-44和age35-44age18-24是重复的,因为它们的值之和是相同的。
答案 0 :(得分:3)
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)])
这将输出:
['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']
答案 1 :(得分:2)
您可以结合使用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)
输出
['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']