Python 向预先存在的字典键追加新值
Python 向预先存在的字典键追加新值,python,function,class,dictionary,key-value,Python,Function,Class,Dictionary,Key Value,set\u more函数用于将新值附加到现有键,这给我带来了问题,我真的找不到原因 info = {} class Dog: def __init__(self,info): info["Name"] = input("Set:\nDog's name: ") info["Age"] = input("Dog's age: ") info["Breed
set\u more
函数用于将新值附加到现有键,这给我带来了问题,我真的找不到原因
info = {}
class Dog:
def __init__(self,info):
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
def get_info(self,info):
self.info = list(info.values())
infs = []
for i in range(len(self.info)):
infs.append(self.info[i])
print(infs)
return infs
def set_more(self,info):
info.setdefault("Name", []).append(input("Set:\nDog's Name: "))
info.setdefault("Age", []).append(input("Dog's Age: "))
info.setdefault("Breed", []).append(input("Dog's Breed: "))
d = Dog(info)
d.get_info(info)
d.set_more(info)
d.get_info(info)
有两个错误
[输入(狗的年龄:)]
setdefault
,只需执行info[“Field”].append()
。详细说明setdefault
,它只返回具有给定键的字段值。它不允许您更改字典
info = {}
class Dog:
def __init__(self,info):
info["Name"] = [input("Set:\nDog's name: ")]
info["Age"] = [input("Dog's age: ")]
info["Breed"] = [input("Dog's breed: ")]
def get_info(self,info):
self.info = list(info.values())
infs = []
for i in range(len(self.info)):
infs.append(self.info[i])
print(infs)
return infs
def set_more(self,info):
info["Name"].append(input("Set:\nDog's Name: "))
info["Age"].append(input("Dog's Age: "))
info["Breed"].append(input("Dog's Breed: "))
d = Dog(info)
d.get_info(info)
d.set_more(info)
d.get_info(info)
有两个错误
[input(Dog's age:)]
setdefault
,只需执行info[“Field”].append()
。详细说明setdefault
,它只返回具有给定键的字段值。它不允许你更改字典
info = {}
class Dog:
def __init__(self,info):
info["Name"] = [input("Set:\nDog's name: ")]
info["Age"] = [input("Dog's age: ")]
info["Breed"] = [input("Dog's breed: ")]
def get_info(self,info):
self.info = list(info.values())
infs = []
for i in range(len(self.info)):
infs.append(self.info[i])
print(infs)
return infs
def set_more(self,info):
info["Name"].append(input("Set:\nDog's Name: "))
info["Age"].append(input("Dog's Age: "))
info["Breed"].append(input("Dog's Breed: "))
d = Dog(info)
d.get_info(info)
d.set_more(info)
d.get_info(info)
使用字典方法来处理对象。与Java或其他语言相比,Python有一个非常实用的字典。
Dog
属于dictionary
类型
get_info
获取姓名
、品种
和年龄
的输入。将它们放入列表并返回列表
set\u info
需要列表输入。它将列表中的元素相应地分配给狗的元素
Dog = {}
def get_info():
info = {}
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
print("\n Input Info: \n")
print(info)
return info
def set_more(info):
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
#If you want the Name to be a list item instead of a key:
#Dog[info['Name']] = {"Name" : info["Name"], "Age" : info["Age"],"Breed": info["Breed"]}
print("\n Dogs: \n")
print(Dog)
print()
Dog = {}
set_more(get_info())
set_more(get_info())
这段代码与您的代码完全相同,只是我使用了dictionary对象而不是创建对象
注意:我通常不会仅仅为赋值创建另一个函数,但我认为您可能需要getter
和setter
方法。如果不需要,只需使用一个函数获取输入并将其附加到Dog
字典,如下所示:
def get_info():
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
print("\n Input Info: \n")
print(info)
return info
每次您调用get_info
,它都会请求输入,并将它们附加到Dog
。这样,整个功能将是:
info = {}
Dog = {}
def get_info():
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
print("\n Input Info: \n")
print(info)
return info
get_info()
使用字典方法来处理对象。与Java或其他语言相比,Python有一个非常实用的字典。
Dog
属于dictionary
类型
get_info
获取姓名
、品种
和年龄
的输入。将它们放入列表并返回列表
set\u info
需要列表输入。它将列表中的元素相应地分配给狗的元素
Dog = {}
def get_info():
info = {}
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
print("\n Input Info: \n")
print(info)
return info
def set_more(info):
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
#If you want the Name to be a list item instead of a key:
#Dog[info['Name']] = {"Name" : info["Name"], "Age" : info["Age"],"Breed": info["Breed"]}
print("\n Dogs: \n")
print(Dog)
print()
Dog = {}
set_more(get_info())
set_more(get_info())
这段代码与您的代码完全相同,只是我使用了dictionary对象而不是创建对象
注意:我通常不会仅仅为赋值创建另一个函数,但我认为您可能需要getter
和setter
方法。如果不需要,只需使用一个函数获取输入并将其附加到Dog
字典,如下所示:
def get_info():
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
print("\n Input Info: \n")
print(info)
return info
每次您调用get_info
,它都会请求输入,并将它们附加到Dog
。这样,整个功能将是:
info = {}
Dog = {}
def get_info():
info["Name"] = input("Set:\nDog's name: ")
info["Age"] = input("Dog's age: ")
info["Breed"] = input("Dog's breed: ")
Dog[info['Name']] = {"Age" : info["Age"], "Breed": info["Breed"]}
print("\n Input Info: \n")
print(info)
return info
get_info()
它给你带来了什么问题?我不明白为什么一条狗会有多个名字、年龄和品种。你为什么要在一个字符串后面加上。为什么不分配呢?注意:字典会更容易,我想你会尝试对类字段使用dict,这通常是Python在幕后所做的(除非你使用_slot)。我将使用class attributeself.name
而不是维护一个外部dict。我还将把输入放在类外部或特定的非初始化方法中。当然,如前所述,如果要堆叠值,则需要将字段初始化为列表self.name=[init\u name]
这会给您带来什么问题?我不明白为什么一条狗会有多个名字、年龄和品种。你为什么要在一个字符串后面加上。为什么不分配呢?注意:字典会更容易,我想你会尝试对类字段使用dict,这通常是Python在幕后所做的(除非你使用_slot)。我将使用class attributeself.name
而不是维护一个外部dict。我还将把输入放在类外部或特定的非初始化方法中。当然,如前所述,如果要堆叠值,则需要将字段初始化为列表self.name=[init\u name]
Wow。谢谢!我没想到今天会有回复,更不用说像这样的回复了。非常感谢。哇。谢谢!我没想到今天会有回复,更不用说像这样的回复了。非常感谢你。