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

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个回答

2

你需要创建一个卖家ID条目的副本,然后再进行更改。就像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中,因此最终它将包含对具有最新修改的相同列表的三个引用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接