向嵌套列表的字典中插入一个值

Insert a value into dict of nested lists

这里我想在嵌套列表的字典中插入一个值。 这是我试过的,

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

请帮我解决这个问题。提前致谢...

发生这种情况是因为您每次更改相同的列表 [0, False, { u'company_id': 4}] 并将其附加到 result,所以最后它将包含对具有最新修改的同一列表的三个引用。

您需要为 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