我相信这个问题已在这里多次讨论过,我找不到合适的词语来找到与此问题相关的问题。
这是我的代码。
def getcopies(listoflists, id_col):
for item in listoflists[1:]:
key = getid(item[id_col])
copies[key] = copies.get(key, 0) + 1
print copies
这是我的输出。
{'20301001': 1}
{'20301001': 1, '20300001': 1}
{'20301001': 1, '20300001': 1, '20303001': 1}
{'20302001': 1, '20301001': 1, '20300001': 1, '20303001': 1}
这就是我想要的输出。
{'20302001': 1, '20301001': 1, '20300001': 1, '20303001': 1}
我的代码显然运行缓慢。如何加快速度,如何避免不需要的输出?
答案 0 :(得分:2)
将你的print copies
置于循环之外并在开始循环之前启动它。
copies = {}
for item in listoflists[1:]:
key = getid(item[id_col])
copies[key] = copies.get(key, 0) + 1
print copies
答案 1 :(得分:0)
只需删除最后一行的缩进。在'for item'下面缩进的所有内容都将被执行x次,其中x是任何元素的数量。
def getcopies(listoflists, id_col):
for item in listoflists[1:]:
key = getid(item[id_col])
copies[key] = copies.get(key, 0) + 1
print copies
答案 2 :(得分:0)
def getid(rough_id):
if len(rough_id)>=8:
i = 0
while i <= len(rough_id) - 8:
if rough_id[i:i+8].isdigit():
id = rough_id[i:i+8]
break
else:
i += 1
else:
print "rough_id is too short"
return id
我一改为:
def getid(rough_id):
id = "id_unknown" #!!!
if len(rough_id)>=8:
i = 0
while i <= len(rough_id) - 8:
if rough_id[i:i+8].isdigit():
id = rough_id[i:i+8]
break
else:
i += 1
else:
print "rough_id is too short"
return id
这一切都开始起作用了。