gpt4 book ai didi

python - 定义具有不可变键但可变值的 python 字典

转载 作者:太空狗 更新时间:2023-10-29 18:15:18 29 4
gpt4 key购买 nike

好吧,问题就在标题中:如何定义具有不可变键但可变值的 python 字典?我想到了这个(在 python 2.x 中):

class FixedDict(dict):
"""
A dictionary with a fixed set of keys
"""

def __init__(self, dictionary):
dict.__init__(self)
for key in dictionary.keys():
dict.__setitem__(self, key, dictionary[key])

def __setitem__(self, key, item):
if key not in self:
raise KeyError("The key '" +key+"' is not defined")
dict.__setitem__(self, key, item)

但它在我看来(不出所料)相当草率。特别是,这是安全的还是有实际更改/添加一些 key 的风险,因为我是从 dict 继承的?谢谢。

最佳答案

考虑代理 dict 而不是继承它。这意味着只允许使用您定义的方法,而不是回退到 dict 的实现。

class FixedDict(object):
def __init__(self, dictionary):
self._dictionary = dictionary
def __setitem__(self, key, item):
if key not in self._dictionary:
raise KeyError("The key {} is not defined.".format(key))
self._dictionary[key] = item
def __getitem__(self, key):
return self._dictionary[key]

此外,您应该使用字符串格式而不是 + 来生成错误消息,否则它会因任何不是字符串的值而崩溃。

关于python - 定义具有不可变键但可变值的 python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14816341/

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