用于允许枚举作为键的键-值对的类似Python dict的设备

问题描述 投票:0回答:1

我有两个从枚举继承的类,我们称它们为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

任何反馈表示赞赏:)

python python-3.x enums static
1个回答
0
投票

通过创建自定义类字典:

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,这意味着在大多数情况下不必进行此类覆盖。

© www.soinside.com 2019 - 2024. All rights reserved.