2016-03-23 13 views
3

ここでは、ネストされたリストの辞書に値を挿入します。 これは、私が試したよ何ネストされたリストのdictに値を挿入する

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}]] 

を取得していますです助けてくださいsolv eこれ。ありがとうございます...

答えて

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に変更して追加するためです。最終的に同じリストへの参照が3つ含まれています。

関連する問題