列表创建快捷方式导致意外结果

时间:2019-06-24 13:44:22

标签: python

我需要根据另一个列表创建一个字典列表。

简化的代码如下:

names = ['A', 'B', 'C']

items_v1 = [{'name': 'TBD', 'value': 0}] * len(names)

iter_v1 = iter(names)
for i in items_v1:
  i['name'] = iter_v1.next()

print items_v1

结果是

[{'name': 'C', 'value': 0}, {'name': 'C', 'value': 0}, {'name': 'C', 'value': 0}]

这不是我想要的。

可以通过不使用列表创建快捷方式来解决此问题:

items_v2 = [{'name': 'TBD', 'value': 0}, {'name': 'TBD','value': 0}, {'name': 'TBD', 'value': 0}]

iter_v2 = iter(names)
for i in items_v2:
  i['name'] = iter_v2.next()

print items_v2

[{'name': 'A', 'value': 0}, {'name': 'B', 'value': 0}, {'name': 'C', 'value': 0}]

但是,此解决方案仅适用于长度为3的列表。

如何修改代码使其既通用又正确?

0 个答案:

没有答案