Python 在字典中生成所有可能的组合
这是我的字典。如何打印所有可能的组合,如:Python 在字典中生成所有可能的组合,python,dictionary,Python,Dictionary,这是我的字典。如何打印所有可能的组合,如: mydict ={1:'All', 2:'Web', 4:'Iphone', 8:'Ipad', 16:'Android', 32:'Iphone-Web', 64:'Ipad-Web', 128:'Android-Web', 256:'Android-Web-Desktop', 512:'Iphone-Web-Desktop', 1024:'Ipad-Web-Desktop'} 等等。这个组合需要用这个想法来创造 总和(键):
mydict ={1:'All',
2:'Web',
4:'Iphone',
8:'Ipad',
16:'Android',
32:'Iphone-Web',
64:'Ipad-Web',
128:'Android-Web',
256:'Android-Web-Desktop',
512:'Iphone-Web-Desktop',
1024:'Ipad-Web-Desktop'}
等等。这个组合需要用这个想法来创造
总和(键):“值(键1)-值(键2)”
。此外,已经有一些组合,请假定它们是新设备。组合的最大长度为len(mydict)。我需要Python版本的。谢谢。打印所有单个结果,然后使用
组合打印两个键的组合
1:'All'
2:'Web'
4:'Iphone'
8:'Ipad'
16:'Android'
32:'Iphone-Web'
64:'Ipad-Web'
128:'Android-Web'
256:'Android-Web-Desktop'
512:'Iphone-Web-Desktop'
1024:'Ipad-Web-Desktop'
3:'All-Web'
5: 'All-Iphone'
6: 'Web-Iphone'
7: 'All-Web-Iphone'
已更新
打印所有可能的组合
from itertools import combinations
for key in mydict:
print "{}: '{}'".format(key, mydict[key])
for x, y in combinations(mydict, 2):
print "{}: '{}'".format(x+y, '-'.join((mydict[x], mydict[y])))
我们不知道您实际上在寻找什么,但如果它是您正在寻找的电源集:
from itertools import combinations
for n in range(len(mydict)):
for combs in combinations(sorted(mydict), n+1):
print "{}: '{}'".format(sum(combs), '-'.join([mydict[key] for key in combs]))
(伴随着递归函数的所有执行时间问题)如果2的幂级数的目的是进行组合,我不明白为什么组合已经存在:all
,Iphone-Web
,Ipad-Web
,Android-Web
,Android-Web-Desktop
,Iphone网络桌面
,Ipad网络桌面
。此外,Desktop
单独缺失。db数据中有一个小故障,我只想选择所有可能的方法,以便将其映射到所需的键值。请假设iphoneweb、Ipad Web、Android Web等都是新的设备。看一看,或者问一个类似的问题。不过,这并不是所有可能的组合。这只适用于由一个或两个项目组成的组合。
from copy import deepcopy
def powerset (id_base=0, prefix="", dictionary=dict(), length=0):
if length < 0:
return dict()
if length == 0:
return dict((id_base,prefix))
if len(prefix):
prefix = prefix + "-"
this_powerset = dict()
for key, item in dictionary.items():
smaller_dictionary = deepcopy(dictionary)
del smaller_dictionary[key]
this_powerset = dict(
powerset( id_base + key,
prefix + item,
smaller_dictionary,
length - 1 ).items()
+ this_powerset.items()
return this_powerset
the_set = powerset(dictionary = mydict, length = len(mydict))