根据值从现有字典生成所有可能的字典

时间:2018-11-18 12:15:28

标签: python python-3.x dictionary combinations itertools

我有一本字典

kwarg = {'a': 0 , 'b': 1 , 'c': 2},我想根据以下值生成所有可能的替代字典:

x1={'a': 1 , 'b': 0 , 'c':2}

x2={'a': 1 , 'b': 2 , 'c':0}

x3={'a': 0 , 'b': 2 , 'c':1}

x4={'a': 0 , 'b': 1 , 'c':2}

x5={'a': 2 , 'b': 1 , 'c':0}

x6={'a': 2 , 'b': 0 , 'c':1}

但是我有6个元素(0,1,2,3,4,5),需要使用python algorytm。

3 个答案:

答案 0 :(得分:5)

应该遵循python3中的代码

import itertools


def main():
    '''The Main'''

    kwarg = {'a': 0 , 'b': 1 , 'c': 2}
    keys = kwarg.keys()
    for comb in itertools.permutations(kwarg.values()):
        print(dict(zip(keys, comb)))



if __name__ == '__main__':
    main()

答案 1 :(得分:0)

python algorithm意味着您不能使用任何预定义的功能/方式吗?如果是,则以下代码可能很好,或者提供了一个很好的起点:

possibilites = [0, 1, 2, 3, 4, 5]

lstOfDicts = []
for a in possibilites:
    for b in possibilites:
        for c in possibilites:
            lstOfDicts.append({"a" : a, "b" : b, "c" : c})

print(lstOfDicts)

答案 2 :(得分:0)

这是我的看法,更具可读性和基本性:

import itertools
kwarg = {'a': 0 , 'b': 1 , 'c': 2}
val=list(kwarg.values())
new=list(itertools.permutations(val))
d=dict()
for i in range(0,len(new)):
    for j in range(0,len(new[i])):
        if j==0:
            d['a']=new[i][j]
        if j==1:
            d['b']=new[i][j]
        if j==2:
            d['c']=new[i][j]
    print(d)