English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Основной курс Python

Контроль потока в Python

Функции в Python

Типы данных в Python

Операции с файлами в Python

Объекты и классы в Python

Даты и время в Python

Продвинутые знания Python

Руководство Python

Метод fromkeys() в Python: использование и примеры

Методы словарей Python

Метод fromkeys() создает новый словарь на основе заданной последовательности элементов, с значениями, предоставленными пользователем.

Синтаксис метода fromkeys():

dictionary.fromkeys(sequence[, value])

Параметры fromkeys()

Метод fromkeys() принимает два параметра:

  • sequence -Элементы последовательности, используемые в качестве ключей нового словаря

  • value (по умолчанию) -Значение, установленное для каждого элемента словаря

Возврат от fromkeys()

Метод fromkeys() возвращает новый словарь, у которого заданные элементы последовательности являются ключами.

Если был установлен параметр value, то каждый элемент нового созданного словаря будет установлен в значение, предоставленное value.

Пример 1: Создание словаря на основе последовательности ключей

# Ключевые гласные
keys = {'a', 'e', 'i', 'o', 'u'}
vowels = dict.fromkeys(keys)
print(vowels)

При выполнении этого программы, вывод будет:

{'a': None, 'u': None, 'o': None, 'e': None, 'i': None}

Пример 2: Создание словаря на основе последовательности ключей с значениями

# Ключевые гласные
keys = {'a', 'e', 'i', 'o', 'u'}
value = 'vowel'
vowels = dict.fromkeys(keys, value)
print(vowels)

При выполнении этого программы, вывод будет:

{'a': 'vowel', 'u': 'vowel', 'o': 'vowel', 'e': 'vowel', 'i': 'vowel'}

Пример 3: Создание словаря из списка изменяемых объектов

# Ключевые гласные
keys = {'a', 'e', 'i', 'o', 'u'}
value = [1]
vowels = dict.fromkeys(keys, value)
print(vowels)
# Обновленные значения
value.append(2)
print(vowels)

При выполнении этого программы, вывод будет:

{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1, 2], 'u': [1, 2], 'o': [1, 2], 'e': [1, 2], 'i': [1, 2]}

Если предоставленный value является изменяемым объектом (его значение можно изменить), напримерсписок,словарьЕсли изменяются изменяемые объекты, то при изменении каждого элемента в последовательности также обновляется.

Это потому, что для каждого элемента назначается ссылка на один и тот же объект (на один и тот же объект в памяти).

Чтобы избежать этой проблемы, мы используем понимание словаря.

# Ключевые гласные
keys = {'a', 'e', 'i', 'o', 'u'}
value = [1]
vowels = { key: list(value) for key in keys }
# Вы также можете использовать { key : value[:] for key in keys }
print(vowels)
# Обновленные значения
value.append(2)
print(vowels)

При выполнении этого программы, вывод будет:

{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}
{'a': [1], 'u': [1], 'o': [1], 'e': [1], 'i': [1]}

Здесь для каждого ключа в keys создается новый список из value, который назначается ему.

По сути, value не назначается элементам, а из него создается новый список, который затем назначается каждому элементу словаря.

Методы словарей Python