2015-05-19 176 views
-3

我编写了以下for循环来解析dict中的键和值的一些行。我如何将它转换为while循环?将for循环转换为while循环以解析行

for i in range(len(lines)): 
    string = lines[i].rstrip("\n") 
    for j in range (len(string)): 
     if string[j] == ':': 
      user[string[:j]] = string[j+1:] 
+1

https://wiki.python.org/moin/WhileLoop我们不是代码翻译服务。 –

+0

而不是在范围(len(lines)):中使用'for,并且只提及'lines [i]',你应该使用'for line in line:'。将其转换为'while'循环将不如'for'循环明确(您将不得不引用基础迭代器)。 – Phylogenesis

回答

5

你不需要大部分你已经写完成分割每行上:的代码和存储在一个字典的结果。只需使用for循环遍历行和.split()

for line in lines: 
    key, value = line.strip().split(':', 1) 
    user[key] = value 

这可以归结为理解。

user = dict(line.strip().split(':', 1) for line in lines) 

如果你真的想用一个while循环,你可以从列表中弹出的值,直到它是空的。

while lines: 
    key, value = lines.pop().strip().split(':', 1) 
    user[key] = value 

如果您不想在适当的位置修改列表,请首先制作副本并使用副本。

loop_lines = lines[:]