你可以使用 zip
来为每个字典设置 'a'
的值。示例代码如下:
for dic,val in zip(dicts,values):
dic['a'] = val
或者用一个单行的表述:
for dic,val in zip(dicts,values): dic['a'] = val
请注意,与前面的代码片段相比,
没有任何区别。这取决于你最喜欢哪个。
我们在这里
更新字典:我们不创建副本等。这是一个重要的区别,因为可以引用给定字典的变量将反映我们所做的更改。
zip(..)
以一个序列或多个可迭代对象(此处为
dicts
和
values
)作为输入,并生成来自这些可迭代对象的元素的元组。因此,它会发出:
(values[0],dicts[0]), (values[1],dicts[1]), ...
现在我们进行元组解包:我们将
val
和
dic
与
values
和
dicts
之一进行统一。对于每个元组,我们都设置
dic['a']
的值。
控制台测试:
$ python3
Python 3.5.2 (default, Nov 17 2016, 17:05:23)
[GCC 5.4.0 20160609] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> values = [5,10,15,20]
>>> dicts = [{'a':0, 'b':0, 'c':0},
... {'a':0, 'b':0, 'c':0},
... {'a':0, 'b':0, 'c':0},
... {'a':0, 'b': 0, 'c':0}]
>>> for dic,val in zip(dicts,values): dic['a'] = val
...
>>> dicts
[{'b': 0, 'c': 0, 'a': 5}, {'b': 0, 'c': 0, 'a': 10}, {'b': 0, 'c': 0, 'a': 15}, {'b': 0, 'c': 0, 'a': 20}]
b
和c
键怎么办?它们的值会保持为0吗? - Ma0