擅长:python、mysql、java
<p>作为一名计算机科学家,我个人喜欢保持从0开始而不是从1开始的惯例。例如,dict1到dict11现在是dict0到dict10。你知道吗</p>
<p>我不知道为什么在代码中使用while循环,我认为if语句就足够了。你知道吗</p>
<p>不管怎样,这里有一些代码给你。它只使用较少数量的字典,但它应该符合您的要求(假设您总是有11行数据后跟一个空行)。你知道吗</p>
<p>顺便说一下,%是一个模除运算符。它返回剩余的股息。因此5%4=1和4%3=1</p>
<p><strong>测试.txt</strong></p>
<pre><code>key1:val1
key2:val2
key3:val3
key4:val4
key5:val5
key6:val6
</code></pre>
<p><strong>脚本</strong></p>
<pre><code>voteFile = open('test.txt')
dict_0 = {}
dict_1 = {}
dict_2 = {}
listDicts = [dict_0, dict_1, dict_2]
lineCount = 0
for line in voteFile:
lineSplit = line.split(":")
if len(lineSplit) == 2:
#Retrieves the dictionary you need by index
listDictIndex = lineCount%len(listDicts)
currentDict = listDicts[listDictIndex]
key = lineSplit[0].strip()
value = lineSplit[1].strip()
currentDict[key] = value
lineCount += 1
voteFile.close()
import pprint
pprint.pprint(listDicts)
</code></pre>
<p><strong>编辑</strong>此算法没有嵌套循环,因此运行时为O(n),其中n是输入文档中的每一行。你知道吗</p>