gpt4 book ai didi

python - 如果 dict().fromkeys() 都指向同一个对象,那么默认值参数有什么用呢?

转载 作者:行者123 更新时间:2023-12-05 05:02:33 25 4
gpt4 key购买 nike

dict 方法 {}.fromkeys() 接受一个可迭代的字符串,它将被转换为字典键。默认值将默认为 None。例如:

d = {}.fromkeys(['loss', 'val_loss'])
{'loss': None, 'val_loss': None}

可选的第二个参数是所有这些值将采用的默认值:

d = {}.fromkeys(['loss', 'val_loss'], [])
{'loss': [], 'val_loss': []}

我知道你可以像这样初始化一个空的字典。变得更复杂的是默认值指向同一个对象

[id(val) for val in d.values()]
[140711273848032, 140711273848032]

如果你要追加一个列表,它会追加这个字典的所有值。因此,您需要将值重新分配给新对象,以便将字典值视为单独的对象:

d['loss'] = list([0.2, 0.4])

如果不这样做,您将同时更改所有字典值。

我的问题:可选默认值的用途是什么?

如我所见,无论如何你都需要重新分配这个默认值,除非你想用不同的字典键操作同一个对象。我想不出一个诚实的理由为一个对象设置多个字典键。

最佳答案

这可以工作(字典理解)

keys = {'A', 'B', 'C'}
int_lst = [9]
a_dict = { key : list(int_lst) for key in keys }
print(a_dict)
a_dict['B'].append(12)
print(a_dict)

关于python - 如果 dict().fromkeys() 都指向同一个对象,那么默认值参数有什么用呢?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62152939/

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