さて、質問はタイトルにあります:不変のキーと可変の値を持つ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)
しかし、私には(当然のことながら)かなりずさんに見えます。特に、これは安全ですか、それとも dict から継承しているため、実際にいくつかのキーを変更/追加するリスクはありますか? ありがとう。