擅长:python、mysql、java
<p>我尽量少写些改动。因为你从一个无序的dict开始,把它转换成一个有序的dict不会带来任何东西。不过,您可以确定<code>dict.keys()</code>和<code>dict.values()</code><a href="https://stackoverflow.com/a/835430/6419007">are in the same order</a>。你知道吗</p>
<p>您只需将<code>None</code>添加到每个值列表中,并删除值为<code>None</code>的对:</p>
<pre><code>from itertools import product
def looper(in_dict):
keys = in_dict.keys()
values = [l + [None] for l in in_dict.values()]
return [{k: v for k,v in zip(keys, t) if v} for t in product(*values)]
x = {"first_name": ["Habib", "Wen-lao"], "second_name": ["Khan", "Chen"]}
for d in looper(x):
print(d)
</code></pre>
<p>它输出:</p>
<pre><code>{'first_name': 'Habib', 'second_name': 'Khan'}
{'first_name': 'Habib', 'second_name': 'Chen'}
{'first_name': 'Habib'}
{'first_name': 'Wen-lao', 'second_name': 'Khan'}
{'first_name': 'Wen-lao', 'second_name': 'Chen'}
{'first_name': 'Wen-lao'}
{'second_name': 'Khan'}
{'second_name': 'Chen'}
{}
</code></pre>