2024-04-25 21:54:38 发布
网友
我试着用一个变量来命名字典,以区分不同的字典。你知道吗
我试过这个:
str(y) + dictionary['z'] = Z
但我得到“SyntaxError:无法分配给运算符”
一种解决方案是使用空类或类似但稍微复杂的SimpleNamespace模块中的types。你知道吗
SimpleNamespace
types
from types import SimpleNamespace bag = SimpleNamespace() bag.dict1 = {'somekey': 'somevalue'} bag.dict2 = {'otherkey': 'othervalue'}
等等
这在功能上大致相当于但往往比为bag使用字典可读一些:比较bag.dict1['somekey']到bag['dict1']['somekey']
bag
bag.dict1['somekey']
bag['dict1']['somekey']
另一个优点是自动完成器通常支持属性,但不支持字符串。因此,如果您在shell或编辑器中使用自动完成功能 您可以键入bag.d,然后按tab以获取bag.dict,但这不适用于bag['d
bag.d
tab
bag.dict
bag['d
如果需要通过文本字符串和字符串变量进行访问,则几乎为空的类更灵活:
class name_space: def __checkkey__(self, key): # better safe than sorry if key.startswith('_') or key.endswith('_') or not key.isidentifier(): raise ValueError(f"Unsupported key: {key}") def __getitem__(self, key): self.__checkkey__(key) return self.__dict__.__getitem__(key) def __setitem__(self, key, value): self.__checkkey__(key) return self.__dict__.__setitem__(key, value) def __delitem__(self, key): self.__checkkey__(key) return self.__dict__.__delitem__(key)
现在你可以做:
bag = name_space() key = 'dict1' bag[key] = {} bag.dict1['somekey'] = 'somevalue'
一种解决方案是使用空类或类似但稍微复杂的
SimpleNamespace
模块中的types
。你知道吗等等
这在功能上大致相当于但往往比为
bag
使用字典可读一些:比较bag.dict1['somekey']
到bag['dict1']['somekey']
另一个优点是自动完成器通常支持属性,但不支持字符串。因此,如果您在shell或编辑器中使用自动完成功能 您可以键入
bag.d
,然后按tab
以获取bag.dict
,但这不适用于bag['d
如果需要通过文本字符串和字符串变量进行访问,则几乎为空的类更灵活:
现在你可以做:
等等
相关问题 更多 >
编程相关推荐