Попытка прочитать один столбец текстового файла по два, чтобы создать пару ключ-значение в словаре - PullRequest
0 голосов
/ 03 апреля 2020

Работа над типичным Python проектом опроса пользователей в столицах штатов. Вместо того, чтобы просто копировать и создавать свой собственный словарь, я читаю текстовый файл. У меня есть часть теста (я думаю), и я борюсь за создание реальных пар ключ-значение. Текстовый файл выглядит следующим образом:

Алабама

Монтгомери

Аляска

Джуно

Аризона

Феникс

Арканзас

Литл-Рок и др. c ....

Я не могу понять, как читать первую строку как ключ (состояние), а вторую строку как стоимость (капитал). Как только у меня появятся правильные переменные, я изменю то, что вызывает мой основной метод. Любая помощь или отзывы приветствуются. Спасибо!

Вот мой код:

    NUM_STATES = 5

    def make_dictionary():
        with open('state_capitals.txt', 'r') as f:
           d = {}
           for line in f:
               d[line.strip()] = next(f, '').strip()

    def main():
        d = make_dictionary()

        correct = 0
        incorrect = 0

        for count in range(NUM_STATES):
            state, capital = d.popitem()

        print('Enter a capital of ', state, '?', end = '')
        response = input() 
        if response.lower() == capital.lower():
            correct += 1
            print('Correct!')
        else:
             incorrect += 1
             print('Incorrect.')

        print('The number of correct answers is: ', correct)
        print('The number of incorrect answers is: ', incorrect)


    main()

1 Ответ

0 голосов
/ 03 апреля 2020

Я бы предложил прочитать файл как строку, а затем сделать это

with open('state_capitals.txt', 'r') as f:
  file_ = f.read()

file_ = list(filter(lambda x:not x == "", file_.split("\n")))

keys = [key for index,key in enumerate(file_) if index%2 == 0]
values = [value for index,value in enumerate(file_) if not index%2 == 0]

dictionary = dict(zip(keys, values))
print(dictionary)
...