Взять название для ключа из переменной

Рейтинг: 0Ответов: 1Опубликовано: 12.04.2023

Я создаю програмку, которая по коду страны, будет выводить ее полное название. Например. Ввод: US Вывод: United States of America И я названия стран беру из отдельного файла, в котором они записаны в таком виде: US: United States of America И записываю это в список, откуда позже циклом for раскладываю ключ и название в словарь, и тут проблема, когда я пытаюсь ввести в название ключа переменную, ключом становиться сама переменная. А нужно что бы ключом становилась строка из переменной. Вот код:

file = open("country.txt", "r").read()
country_list_not = file.split(": ")
country_list = []
country = {}
for i in country_list_not:
    if i.find("\n") != -1:
        if not i.endswith("\n"):
            country_list.append(i[:len(i) - 3])
            country_list.append(i[-2:len(i)])
            continue
        else:
            country_list.append(i[:-1])
            continue

    country_list.append(i)
key = 0
value = 0
for x in country_list:
    if not country_list.index(x) % 2:
        key = x
        continue
    value = x
    country.update(key=value)
print(country)

Вывод:

{'key': 'United Kingdom'}

А должно быть:

{'UK': 'United Kingdom'}

Ответы

▲ 0Принят

Добавьте, пожалуйста, пример файла country.txt. Если Вы храните US: United States of America в каждой строчке отдельно, то можно решить Вашу задачу по-другому.

Основная проблема Ваша в строчке country.update(key=value).

key= - это не Ваша переменная key, а название ключа, по которому будет добавлено значение из переменной value. Правильно будет сделать country[key] = value!

Дополнительно можно упростить Ваш код:

>>> country = {}
>>> with open("country.txt", "r") as file:
...     for line in file.readlines():
...         code, name = line.split(': ')
...         country[code] = name.removesuffix('\n')
... 
>>> print(country)
{'US': 'United States of America', 'GBR': 'The United Kingdom of Great Britain and Northern Ireland'}

country.txt

US: United States of America
GBR: The United Kingdom of Great Britain and Northern Ireland