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))