【发布时间】:2020-01-27 15:30:46
【问题描述】:
我有一个这样初始化的字典:
n = 5
myDict = { 'Field1' : 'Hello',
'Field2' : [0]*n,
'Field3' : [2]*n,
'Field4' : [4]*n,
'Field5' : 'World'}
我希望能够在不知道 n 的值的情况下初始化 myDict。然后在以后知道n 的时间点,更新所有利用n 分配列表长度的字段。我不想重新创建字典。我的第一个想法是使用 ListInit 函数,除非设置了 n,否则它会返回它的自身。我相信我以前见过类似这样的设计模式:
def ListInit(n=None):
return n if n else ListInit
myDict = { 'Field1' : 'Hello',
'Field2' : [0]*ListInit(),
'Field3' : [2]*ListInit(),
'Field4' : [4]*ListInit(),
'Field5' : 'World'}
ListInit(5)
我知道这不起作用的原因有很多,但希望它能让你了解这种模式可能是什么样子。谢谢!
【问题讨论】:
-
感觉像是 XY 问题。为什么在知道
n之后不能创建myDict?你试图解决的实际问题是什么?你的方法介于困难和不可能之间。 -
...或者在知道
n时使用必填字段更新字典。 -
也许字典不是这里的正确工具。作为具有计算属性的类,这可能更有意义。
标签: python dictionary oop initialization