我用OrderedDict存储一些重要的数据。我想确保,意外地插入这个字典的新键会引发异常,但我希望dict是可变的。我想要修正密钥(在__init__
中创建之后)。有没有可能用某个图书馆类做到这一点?或者我必须为此实现新的有序类吗?在
示例:
d = FixedOrderedDict( ( ("A", 1), ("B", 2) ) )
print d["A"]
# 1
d["A"] = 11
print d["A"]
# 11
d["C"] = 33
# throws exception
有人建议我查找名为FrozenDict的解决方案,但它使dict变为只读-无法修改值(分配新值时引发异常)。这不是我想要的。在
您需要一个
dict
的子类,它允许您在某个点冻结键,但允许值发生变化?这一个允许你冻结填充后的关键点,以允许更大的灵活性。在但是要注意,并不是所有的方法都被包装在这里,它也没有试图成为
OrderedDict
的完全模拟——代码假设所有继承的方法都将正确运行。例如,即使在冻结之后,当前仍然允许删除项。在我不知道在标准库中有这样的解决方案(这是一个相当专业的用例)。但是,您可以使用^{} (
collections.abc.MutableMapping
在3.3及以后的版本中)免费获得大部分功能。我现在可能忽略了一些小问题,只是:相关问题 更多 >
编程相关推荐