【问题标题】:Python - readline() loop placing all lines into same value slot in dictionaryPython - readline() 循环将所有行放入字典中的相同值槽中
【发布时间】:2018-11-13 14:20:02
【问题描述】:

我正在尝试创建一个可以使用数字 0-99 访问的城市名称字典。我有一个 txt 文档,我从中读取城市名称,并且我在循环中使用 python 的 readline() 将每个城市输入到字典中。出于某种原因,我的循环在字典的第一个值槽中创建了一个列表,该列表包含所有城市名称,而我希望每个城市对应于字典中的不同数字。为什么循环不进入字典的下一个键并在下一个值槽中输入城市?

这是我的代码块:

i = 0
cities = {}
inFile = open('cities.txt','r')

while i < 100:
    str = inFile.readline()
    str = [line.rstrip('\n') for line in inFile]
    cities[i] = str
    i += 1

提前致谢

【问题讨论】:

  • str = inFile.readline() 有什么用,如果您不使用str,而是在下一行替换它?
  • str是python中的关键字。
  • 下一行不会替换 str,只是去掉末尾所有不必要的字符

标签: python dictionary file-io readline


【解决方案1】:

您可以在 Python 中直接迭代每个文件行。看来您真正需要的是城市列表,而不是字典。

所以你需要的可能是这样的:

cities = []
with open("cities.txt", "r") as infile:
    cities = [city.rstrip('\n') for city in infile]

如果你真的想要字典,那么将列表转换为字典,使用索引作为键:

cities = []
with open("cities.txt", "r") as infile:
    cities = [city.rstrip('\n') for city in infile]

citydict = {index: city for index, city in enumerate(cities)}

【讨论】:

  • 是的,谢谢,成功了!我确实只需要一个列表,但一开始我找不到使用循环添加它的方法,所以感谢你用一块石头杀死了两只鸟
  • cities = [] 行不是必需的。
猜你喜欢
  • 1970-01-01
  • 2022-11-14
  • 2012-09-27
  • 2023-03-26
  • 2013-10-11
  • 1970-01-01
  • 1970-01-01
  • 2013-11-29
  • 1970-01-01
相关资源
最近更新 更多