に応じて、私は次のように使用可能なデバイスの数に応じて自動的に初期化された辞書を作成しましたvalue.Afterとして空のリストこの私は、各リストは、それゆえ私はself.dictLists
を使用して、この機能を作成し、次のように対応するデバイスのための項目を追加しようとしたさまざまなアイテムを追加したい:更新リストは、辞書のキー
for k, v in self.dictLists.iteritems():
if k in item: # the item contain already the device name therefore i check here if the device name is in the item and then i append it to the list of the corresponding device
v.append(items)
print self.dictLists
期待どおりに動作しますが、ありません!何が起こるかは、異なるデバイスに属する新しいアイテムが現れるとすぐに、以前のデバイスアイテムが削除され、新しいデバイスリストのみが満たされるからです。おそらくprint self.dictLists
の出力が問題の理解に役立つでしょう。
{u'device2': [u'item1_d2], u'device1': []}
{u'device2': [u'item1_d2, u'item2_d2'], u'device1': []}
...
私はself.dictLists.setdefault(k, []).append(item)
と試みたが、それは同様に同じように動作します:新しいデバイスが表示されたときに
{u'device1': [u'item1']}
{device1': [u'item1', u'item2']}
{device1': [u'item1', u'item2', u'item3']}
、これが起こります。 何か助けや説明をいただければ幸いです。あなたの関数で
ここで述べたコードはうまくいきます。あなたが共有していないコードのどこかに問題があります。 –
あなたはそれが商品や何かに関連していることを意味しますか?なぜなら、それらのアイテムは自動的に別の機能を形成し、それぞれにはそのデバイスが属するデバイス名が付いているからです。 – TJR
私の感覚が言う通り、あなたはあなたのdict 'self.dictLists'を初期化する部分を再呼び出ししています。しかし、私がコードを見ていないので、私は間違っているかもしれません、そして、これらが呼び出される順序。 –