Python - цикл readline (), помещающий все строки в один слот значения в словаре - PullRequest
0 голосов
/ 13 ноября 2018

Я пытаюсь создать словарь названий городов, к которому можно обращаться по номерам 0-99. У меня есть текстовый документ, из которого я читаю названия городов, и я использую readline () в python в цикле для ввода каждого города в словарь. По какой-то причине мой цикл создает список в первом слоте значения словаря, и этот список содержит все названия городов, тогда как я хочу, чтобы каждый город соответствовал разному числу в словаре. Почему цикл не переходит к следующему ключу словаря и не вводит город в следующем интервале значений?

Вот мой кусок кода:

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 Ответ

0 голосов
/ 13 ноября 2018

Вы можете напрямую перебирать каждую строку файла в 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)}
...