在 Python 3 中使用类和函数使用和更新字典时遇到问题 [新手]

Posted

技术标签:

【中文标题】在 Python 3 中使用类和函数使用和更新字典时遇到问题 [新手]【英文标题】:Trouble working with and updating dictionary using a class and function in Python 3 [Newbie] 【发布时间】:2018-07-26 12:33:23 【问题描述】:

我对编码有点陌生。在过去一年左右的时间里,我一直在自学。我正在尝试建立一个更坚实的基础并尝试创建非常简单的程序。我创建了一个类,并试图将“宠物”添加到可以容纳多个“宠物”的字典中。我已经尝试以多种不同的方式更改代码,但没有任何效果。这是我目前所拥有的。

# Created class
class Animal:

# Class Attribute
classes = 'mammal'
breed = 'breed'

# Initializer/Instance Attribrutes
def __init__ (self, species, name, breed):
    self.species = species
    self.name = name
    self.breed = breed

# To get different/multiple user input
@classmethod
def from_input(cls):
    return cls(
            input('Species: '),
            input('Name: '),
            input('Breed: ')
            )

# Dictionary
pets = 

# Function to add pet to dictionary
def createpet():
    for _ in range(10):
        pets.update = Animal.from_input()
        if pets.name in pets:
            raise ValueError('duplicate ID')

# Calling the function
createpet()

我尝试将其更改为列表并使用“追加”工具,但没有成功。我确信这段代码有很多问题,但我什至不知道该怎么做。我已经研究了“收藏”模块,但不能很好地理解它是否有帮助。我正在寻找的是我可以在哪里运行“createpet()”函数,并且每次都添加一个带有物种、名称和品种的新宠物。我研究了 sqlite3,想知道这是否是一个更好的选择。如果是这样,我该去哪里学习和更好地理解该模块(又名好的初学者教程)。任何帮助,将不胜感激。谢谢!

【问题讨论】:

【参考方案1】:

(首先,您必须在将其添加到字典之前检查重复项。) 您将项目添加到字典x 的方式是

x[y] = z

这会将键 y 的值设置为等于 z,或者,如果没有具有该名称的键,则使用值 z 创建一个新键 y。 更新代码: (我将其定义为类方法,因为from_input 方法也是其中之一,据我了解,这将在继承类时保持工作,有关更多信息,您可能想查看this)

@classmethod
def createpet(cls):
    pet = cls.from_input()
    if pet.name in cls.pets:
        raise ValueError("duplicate ID")
    else:
        cls.pets[pet.name] = pet

【讨论】:

以上是关于在 Python 3 中使用类和函数使用和更新字典时遇到问题 [新手]的主要内容,如果未能解决你的问题,请参考以下文章

模块类和对象(python学习笔记)

python合并两个字典的内容,使用update方法

如何使用递归方法更新python字典

3.python小技巧分享-使用min和max函数去找字典中的最大值和最小值

Python_类和实例属性的增删改查操作

使用 python 元类和继承的问题