一个元组是否适用于这个例子

时间:2015-04-13 06:42:48

标签: python

我编写了一个python脚本,从数据库中提取大量数据(100,000个项目)。该脚本通过循环遍历30个参数列表来导入另一个检索数据的模块(例如,参数1拉取对象1-5000,参数2拉取对象5001-15000,参数3拉取对象15001-16000等)。

返回值存储在30个字典的大型列表中,但似乎只存储了最后一个字典,因为列表不是不可变的,并且每次迭代时它都会被覆盖。当我迭代30个参数时,是否需要将列表转换为元组?元组是否包含30个包含所有100,000个项目的词典?我无法轻松测试,因为它需要花费大量时间来检索数据,所以想知道这是否有效。这是原始代码:

mylist = [{key 1: value 1},{key 2: value 2}...{key 30: value 30}]  
for items in mylist:
    returnlist = call.another.imported.module(**mylist)

循环完成遍历mylist中的所有项目后,此时返回列表仅包含传入的最后一项(也称为键30:值30)的数据库结果字典,缺少前29项。这个元组转换会起作用吗?我需要存储100K对象的所有30个项目。我可以将元组转换回列表吗?这是建议的代码:

mylist = [{key 1: value 1},{key 2: value 2}...{key 30: value 30}]  
for items in mylist:
    returnlist = call.another.imported.module(**mylist)
    returntuple = tuple(returnlist)
newlist = list[returntuple]

1 个答案:

答案 0 :(得分:1)

因为你没有向你的元组添加任何内容,但是你要分配你的列表,而是你可以这样做:

mylist = [{key 1: value 1},{key 2: value 2}...{key 30: value 30}]  
for items in mylist:
    returnlist = call.another.imported.module(**mylist)
    returntuple += tuple(returnlist)
newlist = list[returntuple]

或者作为更好的方式:

#returnlist=[] do it if you didn't initial it before  
mylist = [{key 1: value 1},{key 2: value 2}...{key 30: value 30}]  
for items in mylist:
    returnlist.append(tuple(call.another.imported.module(**mylist)))

#do stuff with returnlist
相关问题