我有生成28个词典列表的代码。它循环28个文件并链接来自适当字典中每个文件的数据点。为了使我的代码更灵活,我想用:创建词典列表
tegDics = [dict() for x in range(len(files))]
但是当我运行的代码的第一个27本字典是空白,只有最后,tegDics [27],有数据。下面是包括笨拙,但实用,代码我在使用该代码生成字典:
x=0
import os
files=os.listdir("DirPath")
os.chdir("DirPath")
tegDics = [{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{},{}] # THIS WORKS!!!
#tegDics = [dict() for x in range(len(files))] - THIS WON'T WORK!!!
allRads=[]
while x<len(tegDics): # now builds dictionaries
for line in open(files[x]):
z=line.split('\t')
allRads.append(z[2])
tegDics[x][z[2]]=z[4] # pairs catNo with locNo
x+=1
有谁知道为什么更优雅的代码不起作用。
- 尼斯找到!我错过了'x'被重用。您应该向OP讲解Python循环的''for each''性质,以及'enumerate()'或'zip()'。 –
不知道_约定,假设通过 – deinonychusaur
与gettext习惯混合有点危险如果你担心这样的混淆,可以随意脱离约定。我也喜欢使用'i'作为我的“变量,除了'range'循环之外,它不会用于任何其他的变量。 – Kevin