Ludzie. Jestem Newbie Python. Mam dwa funkcje DEF jak poniżej klasy.

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

    self.itemID = itemID
    self.itemlist = itemlist

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

I

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

Jeśli zrobię

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

Wtedy kiedy to zrobię

example.get_keys()

Powinien dać:

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

Ale mój daje tylko najnowszy, który jest ['abce'].

Czy ktoś może dać mi znać, jak naprawić?

0
Kevvv 28 wrzesień 2012, 18:02

6 odpowiedzi

Aby dodać nowy klucz do słownika, wystarczy go przypisać.

dict['new_key'] = 'value'
0
vinnydiehl 28 wrzesień 2012, 14:05

Być może

i.extend(self.itemID)

Może być tym, czego szukasz

0
Jakob Bowyer 28 wrzesień 2012, 14:07

Wygląda na to, że nadpisujesz przedmiot za każdym razem, gdy go dodasz.

Po zadzwonieniu Dodaj opcję, tworzysz tę zmienną "Linie", które nigdy nie jest używane ponownie, a Item_id i Item_list są przesadzone z nowymi wejściami.

0
selllikesybok 28 wrzesień 2012, 14:07

Możesz również użyć wbudowanej metody update:

example.update({'Key':'value'})
0
Oz123 28 wrzesień 2012, 14:11
def add_item(self, itemID, itemlist):
    lines = []

Zainicjujesz zmienną lines za pomocą empty list ...

Tak więc za każdym razem, gdy wywołujesz tę metodę, tworzy nową listę i dodaj element do niego .. Możesz raczej zwrócić lines z tej metody i przechowywać go w jakiejś zmiennej, w której wywołujesz tę metodę ..

Lub po prostu oświadcz lines jako instance variable.

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

Lub możesz raczej dodawać swój {x0}} i list do słownika __dict__ twojej klasy ..

dict[itemId] = value;

** Uwaga: - Wystarczy, że nie używałeś poprawnie swojego for-loop.

Musisz przejść przez dobrą książkę Python. Lub raczej dokumentacja Pythona ..

0
Rohit Jain 28 wrzesień 2012, 14:13

Pierwszą rzeczą, którą widzę: ITereating na dwóch elementach od razu zazwyczaj wykonuje się za pomocą zip(), przynajmniej, jeśli oba elementy są listami. W przeciwnym razie użyj pojemnika, który chcesz pętlować się.

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

Ale nie widzę żadnego dict ...

0
LarsVegas 28 wrzesień 2012, 14:15