将列表导入到字典值Python中

2024-05-15 15:28:15 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在尝试从主功能导入此列表项:

character1 = Character("Conan the Barbarian")


for test_item in ["sword", "sausage", "plate armor", "sausage", "sausage"]:
    character1.give_item(test_item)

我正在使用类,在类中有这些方法将列表保存到角色

class Character:

    def __init__(self, character):

        self.__character = character
        self.__dct = {}

    def give_item(self, items):

        self.__dct[self.__character] = items


    def printout(self):

        for characters in self.__dct:
            print(f'Name:', characters)
            for items in self.__dct.keys():
                print(self.__dct[self.__character])

我的输出仅打印列表中的最后一个条目,看起来这些条目被覆盖了。但我真的不明白为什么

我的输出

Name: Conan the Barbarian
sausage

我希望我的输出是:


Name: Conan the Barbarian
   plate armor
   sausage
   sword

Tags: thenameinself列表fordefitems
2条回答

这是因为您正在重复使用密钥。每次,您都将分配给self.__dict[self.__character]

你的循环for items in self.__dict.keys())写得很奇怪items这里实际上是一个键列表,因此只运行一次,而实际上您需要运行它#次

相反,您可以使用列表(或集合):

def __init__(self, character):

    self.__character = character
    self.__dct = {}
    self.__dct[self.__character] = []

def printout(self):
    for characters in self.__dct:
        print(f'Name:', characters)
            for item in self.__dct[self.__character]:
                print(item)

似乎您的self.__dct[self.__character] = items行使用[self.__character]作为关键字附加到您的dict中。在Python字典中,您可以简单地添加列表,只需编写关键字并将列表作为值,如下所示:

self.__dct = {
    "name" = character_name,
    "items" = list_of_items
}

相关问题 更多 >