我有生成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