0

人们。我是蟒蛇新手。我在一个类下有两个 def 函数。

def add_item(self, itemID, itemlist):
    lines = []

    self.itemID = itemID
    self.itemlist = itemlist

    for line in self.itemID, itemlist:
        lines.append(line)

def get_keys(self):
    i = []
    i.append(self.itemID)
    return i 

如果我做

example.add_item('abc', item list)
example.add_item('abcd', item list)
example.add_item('abce', item list)

那么当我这样做的时候

example.get_keys()

它应该给出:

['abc', 'abcd', 'abce']

但我的只给出了最新的一个['abce']

谁能让我知道如何解决?

4

7 回答 7

3

如果我理解正确,您想在示例中添加几个keyanditem_list并能够检索您到目前为止添加的键?最简单的是将keys和存储itemlist在两个列表中

假设您这样初始化对象

def __init__(self, *args, **kwargs):
   self.itemID = []
   self.itemlist = []
   ...

现在,您add_item可以简化

def add_item(self, itemID, itemlist):
    self.itemID.append(itemID)
    self.itemlist.append(itemlist)

而你get_key的只是:

def get_keys():
    return self.itemID

  • 请注意,这get_key正是您建议的,只是更简单(无需创建临时列表)。

  • 当你这样做

    lines = []
    for line in self.itemID, itemlist:
        lines.append(line)
    

    line先取值self.itemID,然后取值itemlist。最终,你lines的只是[self.itemID, itemlist]. 可能不是你想的那样。

于 2012-09-28T14:12:47.097 回答
0

我看到的第一件事是:您一次迭代两个元素,这通常是通过 using 完成的zip(),至少如果两个元素都是列表的话。否则,只需使用要循环的容器。

for id,line in zip(self.itemID, itemlist):
    lines.append(line)

但我没有看到任何dict...

于 2012-09-28T14:09:51.603 回答
0

您还可以使用内置方法update

example.update({'Key':'value'})
于 2012-09-28T14:11:13.367 回答
0
def add_item(self, itemID, itemlist):
    lines = []

您正在使用...初始化lines变量empty list

因此,每次您调用此方法时,它都会创建一个新列表并将项目添加到其中。您可以lines从该方法返回您的并将其存储在您正在调用此方法的某个变量中。

或者,只需声明linesinstance variable.

example = Example();
example.lines = []
example.lines.extend(example.add_item(itemId1, item_list1));
example.lines.extend(example.add_item(itemId2, item_list2));

或者,您可以将您的itemIdand添加到您班级list的字典中。__dict__

dict[itemId] = value;

** 注意: - 刚刚看到,你没有for-loop正确使用你的..你不会two像这样迭代迭代..

您需要阅读一本好的 Python 书籍。或者更确切地说,Python 文档。

于 2012-09-28T14:07:08.893 回答
0

也许

i.extend(self.itemID)

可能是您正在寻找的

于 2012-09-28T14:07:22.653 回答
0

每次添加时,您似乎都在覆盖该项目。

当您调用 add_item 时,您正在创建此变量“lines”,该变量不再使用,并且 item_id 和 item_list 被新输入覆盖。

于 2012-09-28T14:07:40.870 回答
0

要将新键添加到字典中,只需分配它。

dict['new_key'] = 'value'
于 2012-09-28T14:05:22.477 回答