Aco*_*oop 29 python dictionary list append
我是一个基本的python程序员,所以希望我的问题的答案很容易.我正在尝试拿一本字典并将其附加到列表中.然后字典更改值,然后在循环中再次附加.似乎每次执行此操作时,列表中的所有字典都会更改其值以匹配刚刚附加的字典.例如:
>>> dict = {}
>>> list = []
>>> for x in range(0,100):
... dict[1] = x
... list.append(dict)
...
>>> print list
Run Code Online (Sandbox Code Playgroud)
我会假设结果会是,[{1:1}, {1:2}, {1:3}... {1:98}, {1:99}]但我得到了:
[{1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}, {1: 99}]
Run Code Online (Sandbox Code Playgroud)
任何帮助是极大的赞赏.
Mar*_*ers 55
您需要附加一个副本,否则您只是一遍又一遍地添加对同一个字典的引用:
yourlist.append(yourdict.copy())
Run Code Online (Sandbox Code Playgroud)
我使用yourdict而yourlist不是dict和list; 你不想掩盖内置类型.
cha*_*elo 11
当您adict在循环之外创建字典时,您会将相同的字典附加到您的alist列表中。这意味着所有副本都指向同一个字典,并且{1:99}每次都获得最后一个值。只需在循环中创建每个字典,现在您就有了 100 个不同的字典。
alist = []
for x in range(100):
adict = {1:x}
alist.append(adict)
print(alist)
Run Code Online (Sandbox Code Playgroud)
小智 9
只需放入dict = {}循环内即可。
>>> dict = {}
>>> list = []
>>> for x in range(0, 100):
dict[1] = x
list.append(dict)
dict = {}
>>> print list
Run Code Online (Sandbox Code Playgroud)
您还可以使用zip和列表理解来执行您需要的操作。
如果您希望 dict 值从一次使用开始 range(1,100)
l = [dict(zip([1],[x])) for x in range(1,100)]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
45295 次 |
| 最近记录: |