<p>您需要压缩、迭代u中的每个子列表、v中的每个dict并添加新的键/值对,最后将新dict附加到列表中:</p>
<pre><code>from copy import deepcopy
u= [['1', '2'], ['3'], ['4', '5', '6'], ['7', '8', '9', '10']]
v=[{'id': 'a', 'adj': ['blue', 'yellow']}, {'id': 'b', 'adj': ['purple', 'red']}, {'id': 'c', 'adj': ['green', 'orange']}, {'id': 'd', 'adj': ['black', 'purple']}]
out = []
# match up corresponding elements fromm both lists
for dct, sub in zip(v, u):
# iterate over each sublist
for val in sub:
# deepcopy the dict as it contains mutable elements (lists)
dct_copy = deepcopy(dct)
# set the new key/value pairing
dct_copy["value"] = val
# append the dict to our out list
out.append(dct_copy)
from pprint import pprint as pp
pp(out)
</code></pre>
<p>这将给你:</p>
<pre><code>[{'adj': ['blue', 'yellow'], 'id': 'a', 'value': '1'},
{'adj': ['blue', 'yellow'], 'id': 'a', 'value': '2'},
{'adj': ['purple', 'red'], 'id': 'b', 'value': '3'},
{'adj': ['green', 'orange'], 'id': 'c', 'value': '4'},
{'adj': ['green', 'orange'], 'id': 'c', 'value': '5'},
{'adj': ['green', 'orange'], 'id': 'c', 'value': '6'},
{'adj': ['black', 'purple'], 'id': 'd', 'value': '7'},
{'adj': ['black', 'purple'], 'id': 'd', 'value': '8'},
{'adj': ['black', 'purple'], 'id': 'd', 'value': '9'},
{'adj': ['black', 'purple'], 'id': 'd', 'value': '10'}]
</code></pre>
<p>dict有一个<code>.copy</code>属性,或者你可以调用<code>dict(dct)</code>,但是因为你有可变的对象作为值,仅仅做一个浅层拷贝是不起作用的。下面的示例显示了实际的差异:</p>
<pre><code>In [19]: d = {"foo":[1, 2, 4]}
In [20]: d1_copy = d.copy() # shallow copy, same as dict(d)
In [21]: from copy import deepcopy
In [22]: d2_copy = deepcopy(d) # deep copy
In [23]: d["foo"].append("bar")
In [24]: d
Out[24]: {'foo': [1, 2, 4, 'bar']}
In [25]: d1_copy
Out[25]: {'foo': [1, 2, 4, 'bar']} # copy also changed
In [26]: d2_copy
Out[26]: {'foo': [1, 2, 4]} # deepcopy is still the same
</code></pre>
<p><a href="https://stackoverflow.com/questions/17246693/what-exactly-is-the-difference-between-shallow-copy-deepcopy-and-normal-assignm">what-exactly-is-the-difference-between-shallow-copy-deepcopy-and-normal-assignment</a></p>