【发布时间】:2020-01-09 17:04:06
【问题描述】:
我有一个包含 2 个参数列表的类,如果用户确认,我必须将它们保存到 2 个列表中,修改它并从第二行恢复原始列表。 这是我的代码:
class Pokemon:
def __init__(self):
self.pokemon = {"Poke_Name": "", "Poke_Specie": "", "Poke_Type": "", "Poke_Weight": "",
"Poke_Height": "", "Poke_Abilities": [], "Poke_Stats": [], "URL": ""}
def set_Poke_Name(self, name):
self.pokemon["Poke_Name"] = name
def set_Poke_Specie(self, specie):
self.pokemon["Poke_Specie"] = specie
def set_Poke_Type(self, tipo):
self.pokemon["Poke_Type"] = tipo
def set_Poke_Weight(self, peso):
self.pokemon["Poke_Weight"] = peso
def set_Poke_Height(self, altezza):
self.pokemon["Poke_Height"] = altezza
def add_Abilities(self, abilita):
self.pokemon["Poke_Abilities"].append(abilita.poke_abilities)
def add_Stats(self, stats):
self.pokemon["Poke_Stats"].append(stats.poke_stats)
def set_url(self, url):
self.pokemon["URL"] = url
def __str__(self):
return str(self.pokemon)
class Poke_Abilities:
def __init__(self):
self.poke_abilities = {"Nome": "", "Speciale": ""}
def set_abilita_nome(self, nome):
self.poke_abilities["Nome"] = nome
def set_abilita_speciale(self, speciale):
self.poke_abilities["Speciale"] = speciale
def __str__(self):
return self.poke_abilities
...
nomi = []
special = []
for j in pok["Poke_Abilities"]:
nomi[j] = j["Nome"]
special[j] = j["Speciale"]
这是错误:
nomi[j] = j["Nome"]
TypeError: list indices must be integers or slices, not dict
【问题讨论】:
-
皮卡丘不可复制。你想要副本还是深副本?当您更改一个字典中的某些内容时,是否希望将更改反映在另一个字典中?定义新函数并返回 self.pokemon,然后可以初始化新的 Class 变量,将该字典作为参数传递并稍微更改 init
-
什么是
pok["Poke_Abilities"]?该错误意味着它是一个字典列表,因此j是一个字典。 -
您不能通过分配给索引来创建新的列表元素。您需要使用
nomi.append(...)。 -
@Barmar 感谢您的帮助。 Poke_Abilities 是一个字典, pok 是一个包含 Poke_Abilites 列表的口袋妖怪类对象。我需要将所有列表保存在一个新列表中,用它来节省机会,如果用户确认,则从新列表中重写第一个列表。我该怎么办?