gpt4 book ai didi

具有固定 .keys() 内容和可变参数的 Python 字典

转载 作者:行者123 更新时间:2023-12-02 18:07:00 24 4
gpt4 key购买 nike

我试图从文本文件中读入一堆数据到字典中,我犯了几个小错别字,最终创建了新的键/值对并破坏了程序(这可能很烦人并且调试起来很痛苦)。

这让我想知道是否有一种方法可以创建一个在初始声明后不能添加或删除任何键的字典。这让我觉得这是必须存在的东西,但我找不到它的例子;有谁知道符合要求的东西吗?

def change_key(dictionary, key, new_value):
a = dictionary.__len__()
dictionary[key] = new_value
if dictionary.__len__() != a:
raise ValueError("new key added")

我正在寻找的是上面代码的更优雅的实现:

  1. 不是一堆乱七八糟的代码

  2. 能够处理诸如附加到嵌套列表或添加到嵌套字典之类的事情

  3. 相当高效

最佳答案

我相信您正在寻找的是 __slots__ 的数据类方法(在 Python 3.10+ 中,这可以通过 @dataclass(slots=True) 实现):

from dataclasses import dataclass, asdict


@dataclass
class FixedKeys:
__slots__ = ("key_1", "key_2", "key_3")
key_1: str
key_2: str
key_3: str


d = FixedKeys(key_1="something", key_2="something_else", key_3="another_thing")
d.key_1 = "updated_value" # This will work fine
d.key_that_was_not_predefined = "some value" # This will raise AttributeError
d = asdict(d) # This converts a dataclass instance to a normal dictionary

关于具有固定 .keys() 内容和可变参数的 Python 字典,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73035588/

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