具有预定义键的字典类

时间:2015-09-25 02:07:09

标签: python class dictionary key

我知道我可以用特定的键制作一本字典:

my_dict = dict.fromkeys(my_keys)

我知道我可以继承字典类:

class My_Dict_Class(dict):
    ...

但是如何将两者合并?我想创建一个字典类,我已经知道它将拥有的所有键。我知道我可以在课堂上设置一些键,但如果我能做的话,它不会更好更快:

class My_Dict_Class(dict.fromkeys(my_keys)):
    ...

我想这样做的原因是我听说fromkeys比循环和设置键in this question要快得多。

MWE:

  my_keys = [1,2,3]
  my_dict = dict.fromkeys(my_keys)

  class My_Dict_Class(dict):
      def my_functions(self):
          return

  class My_Dict_Class(dict.fromkeys(my_keys)):
      def my_functions(self):
          return

Traceback (most recent call last):
  File "dummy.py", line 8, in <module>
    class My_Dict_Class(dict.fromkeys(my_keys)):
TypeError: Error when calling the metaclass bases
    dict expected at most 1 arguments, got 3

1 个答案:

答案 0 :(得分:1)

Python类继承自其他类,而不是类实例。如果您的目标是快速初始化每个实例的字典内容,则复制现有字典比您可以执行的任何其他操作都要快。例如,您可以定义:

class MyDict(dict):
    _DEFAULT_CONTENTS = dict.fromkeys((1, 2, 3))
    def __init__(self):
        super(MyDict, self).__init__(self._DEFAULT_CONTENTS)

将(浅)复制现有的类默认字典以初始化实例。