向嵌套列表的字典中插入一个值
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
这里我想在嵌套列表的字典中插入一个值。 这是我试过的,
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