类似Python的keyvalue对设备,允许枚举作为键

2024-09-29 02:24:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有两个从enum继承的类,我们称它们为Class1和Class2,即

class Class1(Enum):
    ItemA = 'ItemA'
    ItemB = 'ItemB'
    ItemC = 'ItemC'

对于Class1中的每一项,我都希望有一个包含Class2键和Class1值的字典。基本上我需要这样一个静态对象,我可以在整个应用程序中访问它:

d = {Class1.ItemA: {Class2.ItemX: Class1.ItemB, Class2.ItemY: Class1.ItemC},
Class1.ItemB: {Class2.ItemX: Class1.ItemD, Class2.ItemY: Class1.ItemE}}

我如何才能做到这一点,以便我仍然可以利用字典的内置魔力,例如:

if Class1.ItemA in d

任何反馈:)


Tags: 对象应用程序字典静态enumclassclass1class2
1条回答
网友
1楼 · 发布于 2024-09-29 02:24:53

通过创建自定义类词典:

class Class1KeyDictionary():
    def __init__(self, *args):
        # Expect iterable of (key, value) pairs
        self.dictionary = {key.value: value for key, value in args}
    def __contains__(self, key):
        return key.value in self.dictionary

Python类应该在字典查找中使用唯一的id,这意味着在大多数情况下不需要这种重写。你知道吗

相关问题 更多 >