gan*_*cus 3 python for-loop list
我很难搞清楚为什么我在我的item_list列表中重复的"行"列表中得到n个最后元素?所以,如果我的行是一个元组列表:
(("ID 1", "info1", "description1"), ("ID 2", "info2", "description2"), ... ("ID 14", "info14", "description14"))
Run Code Online (Sandbox Code Playgroud)
然后我尝试使用以下代码从这个"行"元组列表中创建一个列表字典:
item_list = []
info = {}
for row in rows:
itemId = row[0]
itemInfo = row[1]
itemDesc = row[2]
info['ID'] = itemId
info['Info'] = itemId
info['Description'] = itemDesc
print info
item_list.append(info)
print item_list
Run Code Online (Sandbox Code Playgroud)
因此,如果我的"行"列表包含14个元素,我将在"item_list"字典列表中的"行"中获得第14个元素(最后一个元素)14次.
item_list = [{"ID": "ID 14", "Info": "info14", "Description": "description14"}, {"ID": "ID 14", "Info": "info14", "Description": "description14"} ... ] #14 times
Run Code Online (Sandbox Code Playgroud)
"行"列表是元组列表.如果我在附加到"item_list"之前打印"info"字典,我可以看到我的"info"字典的每个不同的迭代.
有人有主意吗?提前致谢.
use*_*450 11
我想你要改变:
item_list = []
info = {} # <---- Move this to inside the loop.
for row in rows:
itemId = row[0]
itemDesc = row[10]
Run Code Online (Sandbox Code Playgroud)
至:
item_list = []
for row in rows:
info = {} # <---- here
itemId = row[0]
itemDesc = row[10]
Run Code Online (Sandbox Code Playgroud)
您仅创建了一部info字典。每次添加时info,都将添加相同的字典。当在随后的循环迭代修改info与info['ID'] == ...等,要修改这个单一的字典。到处都有修改的引用,包括中的每个列表元素item_list。
要解决此问题,请info = {}在循环内移动。这样,您将在每次迭代中创建(并追加)新词典。
| 归档时间: |
|
| 查看次数: |
2499 次 |
| 最近记录: |