Nar*_*hut 3 python permutation python-itertools
我有这样的字典 -
{'A': 0, 'B': 0, 'C': 0, 'D': 4}
Run Code Online (Sandbox Code Playgroud)
我想生成一个这样的列表 -
[{'A': 1, 'B': 0, 'C': 0, 'D': 4},
{'A': 0, 'B': 1, 'C': 0, 'D': 4},
{'A': 0, 'B': 0, 'C': 1, 'D': 4},
{'A': 0, 'B': 0, 'C': 0, 'D': 5}]
Run Code Online (Sandbox Code Playgroud)
什么是最pythonic的方式来做到这一点?
你可以像这样使用列表理解和字典理解
d = {'A': 0, 'B': 0, 'C': 0, 'D': 4}
print [{key1: d[key1] + (key1 == key) for key1 in d} for key in d]
Run Code Online (Sandbox Code Playgroud)
产量
[{'A': 1, 'B': 0, 'C': 0, 'D': 4},
{'A': 0, 'B': 0, 'C': 1, 'D': 4},
{'A': 0, 'B': 1, 'C': 0, 'D': 4},
{'A': 0, 'B': 0, 'C': 0, 'D': 5}]
Run Code Online (Sandbox Code Playgroud)
我们的想法是为每个字典生成一个新的字典key,当key匹配用字典理解构造的字典的键时,然后添加1它.只会在两个键都匹配时(key1 == key)评估1,否则它将为零.