它看起来像返回的列表keys()和values()字典的方法总是一对一的映射(假设字典在调用2方法之间没有改变).
例如:
>>> d = {'one':1, 'two': 2, 'three': 3}
>>> k, v = d.keys(), d.values()
>>> for i in range(len(k)):
print d[k[i]] == v[i]
True
True
True
Run Code Online (Sandbox Code Playgroud)
如果你不改变调用keys()和调用之间的字典values(),假设上面的for循环总是打印True是错误的吗?我找不到任何证明这一点的文件.
我希望将字典中值的所有组合作为多个字典(每个字典包含原始的每个键但只包含原始值的一个值).假设我想通过以下方式参数化函数调用:
kwargs = {'a': [1, 2, 3], 'b': [1, 2, 3]}
Run Code Online (Sandbox Code Playgroud)
如何获得所有组合的列表,如下所示:
combinations = [{'a': 1, 'b': 1}, {'a': 1, 'b': 2}, {'a': 1, 'b': 3},
{'a': 2, 'b': 1}, {'a': 2, 'b': 2}, {'a': 2, 'b': 3},
{'a': 3, 'b': 1}, {'a': 3, 'b': 2}, {'a': 3, 'b': 3}]
Run Code Online (Sandbox Code Playgroud)
原始中可以有任意数量的密钥,kwargs并且每个值都是可迭代的,但值的数量不固定.
如果可能:final combinations应该是一个生成器(不是列表).