0

人。私はPython初心者です。クラスの下に以下の2つの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

私が正しく理解している場合は、いくつかの例keyitem_list例に追加して、これまでに追加したキーを取得できるようにしますか?keys最も簡単なのは、とitemlistを2つのリストに保存することです。

オブジェクトをそのように初期化すると仮定します

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

辞書に新しいキーを追加するには、それを割り当てるだけです。

dict['new_key'] = 'value'
于 2012-09-28T14:05:22.477 に答える
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));

または、クラスの辞書にitemIdとを追加することもできます。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を呼び出すと、二度と使用されないこの変数「行」が作成され、item_idとitem_listが新しい入力で上書きされます。

于 2012-09-28T14:07:40.870 に答える
0

zip()私が最初に目にするのは、少なくとも両方の要素がリストである場合、通常はを使用して行われる2つの要素を同時に反復していることです。それ以外の場合は、ループするコンテナを使用します。

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 に答える