gpt4 book ai didi

python - 在列表中设置 dict 字段的 pythonic 方式是什么

转载 作者:太空宇宙 更新时间:2023-11-03 14:07:47 25 4
gpt4 key购买 nike

我有两个列表,一个包含 int 值:

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}]

我想从值列表中获取第一个值,并将第一个字典的字段“a”设置为来自“值”列表的值,依此类推。换句话说输出应该是:

dicts = [{'a':5, 'b':0, 'c':0},
{'a':10, 'b':0, 'c':0},
{'a':15, 'b':0, 'c':0},
{'a':20, 'b': 0, 'c':0}]

执行此操作的 Pythonic 方法是什么?

最佳答案

好吧,您可以使用 zip 为每个字典设置 'a' 的值。像这样的东西:

for dic,val in zip(dicts,values):
dic['a'] = val

或者将其放在单行中:

for dic,val in zip(dicts,values): dic['a'] = val

请注意,与前面的代码片段没有区别。这取决于您的眼睛最喜欢什么。

我们在这里更新字典:我们不创建副本等。这是一个重要的区别,因为可以引用给定字典的变量将反射(reflect)我们所做的更改。

zip(..) 将一个或多个可迭代对象(此处为 dictsvalues)作为输入,并生成这些元素的元组可迭代对象。所以它发出:

(values[0],dicts[0]), (values[1],dicts[1]), ...

现在我们进行元组解包:我们将 valdicvalues 之一和一个统一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}]

关于python - 在列表中设置 dict 字段的 pythonic 方式是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41937967/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com