Python for 循环不迭代

标签 python loops dictionary

我试图循环遍历字符串列表,如果它们的长度等于用户输入的长度,则将它们添加到字典中。当最后一个循环运行时,它只运行一次。我知道这一点是因为字典中的第一个单词有 8 个字符长,当用户输入为 8 时,它只打印该单词,而不打印其他 8 个字符的单词。如果输入为 3,则打印一个空字典。为什么我的循环没有迭代列表行列表中的所有单词?

wordLength = raw_input("Enter a word length ")
word_dict = {}
infile = open("dictionary.txt")

for line in infile:
    line = line.strip()
    linelist = line.split(" ")


for word in linelist:
    if len(word) == int(wordLength):
        if len(word) in word_dict:
            word_dict[len(word)] = word_dict[len(word)].append(word)
        else:
            word_dict[len(word)] = word

print word_dict

最佳答案

每次运行第一个循环时,它都会将 linelist 设置为新值,覆盖任何旧值。第一个循环运行后,linelist 将仅包含文件最后一行的split 结果。每次处理文件的一行时,您都会丢弃对前一行所做的任何操作。

如果您想构建字典文件中所有单词的列表,则需要创建一个列表并在 for line in infile 循环的每次迭代中附加到该列表。

此外,如果每一行只有一个单词,则在每一行上使用 split 没有多大意义,因为不会进行任何拆分。

关于Python for 循环不迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22443787/

相关文章:

python - 在 GitPython 中迭代提交 b/w 2 指定的提交

swift - 如何从字典中删除某个 CGPoint

python - 添加到购物篮,并从库存中取出等值产品

c# - 在C#中将xml字符串(字段/值对)解析为Dictionary对象的快速方法

python - 使用函数返回的变量时出现名称错误

wpf - WPF:另一个线程拥有的 Storyboard 循环对象

Python:打开大量套接字的更好方法

c# - 永远增加你得到-2147483648?

python - 对 django 时区支持感到困惑

使用将列表作为值的字典对列表进行分组的 Pythonic 方法