代码之家  ›  专栏  ›  技术社区  ›  Amin

Python-readline()循环将所有行放入字典中的相同值槽中

  •  0
  • Amin  · 技术社区  · 7 年前

    我正在尝试创建一个城市名称字典,可以使用数字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
    

    1 回复  |  直到 7 年前
        1
  •  1
  •   Seb    7 年前

    您可以在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)}