hua*_*eng 0 dictionary python-3.x
我遇到的代码未能达到我的期望。详细信息如下:
a = ['name']
b = [('name=cheng',),('name=huang',),('name=pan',)]
Dict = {}
c = []
for i in range(0,3):
for j in range(0,1):
Dict[a[j]] = b[i][j]
c.append(Dict)
print(c)
>>> [{'name':'name=pan'},{'name':'name=pan'},{'name':'name=pan'}]
Run Code Online (Sandbox Code Playgroud)
i应该是什么
>>> [{'name':'name=cheng'},{'name':'name=huang'},{'name':'name=pan'}]
Run Code Online (Sandbox Code Playgroud)
那你能告诉我如何解决这个问题吗?
您正在更改Dict 就地值,而不是每次都未创建新词典。循环的每次迭代都将Dict["name"]等于其中的一个元素b,然后将其附加到列表中。循环的下一次迭代将更改dict(意味着您附加到c的先前版本也将被更改)。结果是您的列表c中填充了在循环的最后一次迭代中创建的字典的3个精确副本(在内存中完全相同的位置)。
您如何解决这个问题?每次制作一本新字典。
a = ['name']
b = [('name=cheng',),('name=huang',),('name=pan',)]
c = []
for i in range(0,3):
for j in range(0,1):
temp_dict = {a[j]: b[i][j]}
c.append(temp_dict)
print(c)
Run Code Online (Sandbox Code Playgroud)
结果:
[{'name': 'name=cheng'}, {'name': 'name=huang'}, {'name': 'name=pan'}]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
53 次 |
| 最近记录: |