Найти - Пользователи
Полная версия: dict.fromkeys
Начало » Python для новичков » dict.fromkeys
1
Dorum
Добрый вечер.
 d = {}
for _ in range(int(input("Введите количество стран: "))):
    country = input("Введите страну: ")
    city = input("Введите город для этой страны: ").split()
    d.fromkeys(city, country)
print(d)
Выходит функцию fromkeys нельзя использовать в качестве заполнителя словаря? Ибо словарь с переменной d остается пустым после завершения цикла. Но стоит присвоить переменную этой функции, например, d = dict.fromkeys(city, country), то другое дело, однако, если стран более 1-й она будет перезаписываться.

Заранее спасибо за ответ.
Dorum
 d = {}
for _ in range(int(input("Введите количество стран: "))):
    country = input("Введите страну: ")
    city = input("Введите город для этой страны: ").split()
    for a in city:
        d.setdefault(a, country)
print(d)

Реализовал таким способом, однако, мой вопрос все равно остается актуальным.
FishHook
Dorum
Выходит функцию fromkeys нельзя использовать в качестве заполнителя словаря?
Можно, если понимать, как она работает. Для этого достаточно прочитать справку
давайте я вам процитирую
dict.fromkeys
Добавлено в 2.3
Возвращает новый словарь, сформированный из указанной последовательности, с указанным значением элементов.
Прототип
fromkeys(seq)
Параметры
seq : Любая последовательность, например список list.
Ну и где у вас последовательность? Последовательность - это список, итератор, генератор или что-то что можно перебрать. Это работает вот так
 d = dict.fromkeys([1, 2, 3, 4, 5, 6], False)
Dorum
FishHook
Ну и где у вас последовательность?
Как же? Я использую city в качестве последовательности.
  d = {}
for _ in range(int(input("Введите количество стран: "))):
    country = input("Введите страну: ")
    city = input("Введите город для этой страны: ").split()
    d.fromkeys(city, country)
print(d)
FishHook
Ну так блин же!
fromkeys не меняет содержимое словаря, этот метод возвращает новый словарь, то есть ваша пятая строка d.fromkeys(city, country) вообще ничего полезного не делает. Она возвращает значение, которое вы не используете.
PEHDOM
вы неправильно fromkeys используете.
замените d.fromkeys(city, country) на d.update(dict.fromkeys(city, country)) и будет вам счатье.
Выше уже написали почему так. fromkeys не меняет текущий словарь.
Ах да , и подумайте что вы получите если город будет называться “Нижний Новгород” например
FishHook
Обычно, когда нужно такое поведение используют defaultdict
Dorum
FishHook
PEHDOM
Уловил. Спасибо!
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB