【问题标题】:Dictionary class with predefined keys具有预定义键的字典类
【发布时间】:2015-12-22 18:48:50
【问题描述】:

我知道我可以制作带有特定键的字典:

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

【问题讨论】:

  • 考虑namedtuple ?

标签: python class dictionary key


【解决方案1】:

Python 类继承自其他类,而不是类实例。如果您的目标是快速为每个实例初始化字典的内容,那么复制现有字典比您可以做的任何其他事情都快。例如,您可以定义:

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

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

【讨论】:

    猜你喜欢
    • 2019-04-03
    • 2021-11-22
    • 1970-01-01
    • 2018-02-12
    • 2018-11-05
    • 1970-01-01
    • 2012-03-11
    • 2013-11-21
    • 1970-01-01
    相关资源
    最近更新 更多