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/