2016-03-23 65 views
3

這裏我想插入一個值到嵌套列表的字典中。 這就是我試過,在嵌套列表的字典中插入一個值

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 

我得到這個

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

但我很期待這個,

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

請幫我解決這個。在此先感謝...

回答

2

您需要在seller_ids中創建要更改的條目的副本。就像niemmi說的,否則你每次操縱相同的條目。

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

發生這種情況是因爲您每次更改並追加相同的列表[0, False, { u'company_id': 4}]result所以最終它將包含三個引用到最新修改的同一列表。

相關問題