我需要根据另一个列表创建一个字典列表。
简化的代码如下:
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的列表。
如何修改代码使其既通用又正确?