如何在结构复杂的自定义类中按键查找列表项?

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

我有一个自定义 python 类(从现实世界的示例中抽象出来),我想通过键(名称)检索列表中的特定记录。我是第一次尝试很多新的 Python 功能,所以如果我在做一些愚蠢的事情,请多多包涵。

class Person():
  def __init__(self, name)
      self.name = name

  class Hobbies():
    def __init__(self):
        self.items=[]

    def __len__(self):
        return len(self.items)

    def __getitems__(self, key):
        return next((item for item in self.items if item['hobby'] == key), None)

    def add_hobby(self, hobby):
        self.items.append(hobby)


class Hobby():
    def __init__(self, hobby):
        self.hobby = hobby

    def __get_item__(self, key):
        pp = pprint.PrettyPrinter()
        return pp.pformat(self.__dict__)



person = Person("James")
hobbies = person.Hobbies()

hobby = Hobby({'hobby1': [{'name':'walking', 'regularity':'Daily', 'type':'physical'}, {'hobby2':['name':'reading', 'regularity':'Weekly', 'type':'mental']}})

hobbies.add_hobby(hobby)

首先,我会为我选择的例子道歉,它没有什么意义,但确实传达了我正在处理的结构,我复制了这段代码,但没有在没有安装 python 的机器上运行它:(

我好像看不出来怎么能通过key得到特定的爱好记录

我已经尝试了很多事情并不断得到“无”返回,所以我的列表理解显然是错误的(或者我对结构的理解)

我想为任何项目打印字典对象,例如:

打印(爱好['步行'])

打印(爱好['hobby1'])

如有任何帮助,我们将不胜感激!

python class inner-classes
© www.soinside.com 2019 - 2024. All rights reserved.