2016-03-23 4 views
3

Hier möchte ich einen Wert in das Wörterbuch der verschachtelten Listen einfügen. Das ist, was ich versucht,Fügen Sie einen Wert in dict verschachtelter Listen ein

company_ids = [1,2,3] 
seller_ids = [[0, False, { u'company_id': 4}]] 
result = [] 
for company in company_ids: 
    for i in xrange(0, len(seller_ids)): 
     seller_ids[i][2]['company_id'] = company 
     result.append(seller_ids[i]) 
print result 

Ich bekomme diese

[[0, False, {u'company_id': 3}], 
[0, False, {u'company_id': 3}], 
[0, False, {u'company_id': 3}]] 

Aber ich erwarte dies,

[[0, False, {u'company_id': 1}], 
[0, False, {u'company_id': 2}], 
[0, False, {u'company_id': 3}]] 

Bitte hilf mir solv e dies. Vielen Dank im Voraus ...

Antwort

2

Sie müssen eine Kopie des Eintrags in seller_ids erstellen, den Sie ändern möchten. Wie niemmi sagte, sonst manipulierst du jedes Mal den gleichen Eintrag.

from copy import deepcopy 

company_ids = [1,2,3] 
seller_ids = [[0, False, { u'company_id': 4}]] 
result = [] 
for company in company_ids: 
    for i in xrange(0, len(seller_ids)): 
     mycopy = deepcopy(seller_ids[i]) 
     mycopy[2]['company_id'] = company 
     result.append(mycopy) 

print result 
1

Dies passiert, weil Sie ändern und fügen Sie die gleiche Liste [0, False, { u'company_id': 4}] jedes Mal an result, so dass es am Ende enthält drei Referenzen auf die gleiche Liste mit der neuesten Änderung.

Verwandte Themen