我想要列表d = [{'name': 'Ada Lovelace'},{'name': 'Alan Turing'}]
。
但字典变异
>>> a = ['Ada Lovelace','Alan Turing']
>>> c = dict()
>>> d = []
>>> for i in a:
... print c
... print d
... c['name'] = i
... d.append(c)
... print c
... print d
...
{}
[]
{'name': 'Ada Lovelace'}
[{'name': 'Ada Lovelace'}]
{'name': 'Ada Lovelace'}
[{'name': 'Ada Lovelace'}]
{'name': 'Alan Turing'}
[{'name': 'Alan Turing'}, {'name': 'Alan Turing'}]
答案 0 :(得分:3)
你一遍又一遍地重复使用同一个词典。在循环中创建一个 new 字典:
for i in a:
c = {'name': i}
d.append(c)
将对象附加到列表不创建副本;它只是在列表中存储对该对象的引用。
通过一遍又一遍地重复使用相同的dict
对象,您只需将对一个字典的多个引用附加到列表中。
答案 1 :(得分:0)
使用字典文字语法以及列表推导将满足您的需求:
>>> names = ['foo','bar']
>>> d = [{'name': i} for i in names]
>>> d
[{'name': 'foo'}, {'name': 'bar'}]