Сообщить об ошибке.

Метод dict.fromkeys() в Python, словарь с ключами по умолчанию

Создание словаря dict со значениями ключей по умолчанию

Синтаксис:

dict.fromkeys(iterable[, value])

Параметры:

  • iterable - итерируемая последовательность
  • value - значение по умолчанию

Возвращаемое значение:

Описание:

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

dict.fromkeys() - это метод класса, который возвращает новый словарь, значение по умолчанию None. Все значения относятся только к одному экземпляру, поэтому обычно не имеет смысла, чтобы значение value было изменяемым объектом, таким как пустой список.

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

Примеры создания словаря из списка со значениями по умолчанию:

>>> x = dict.fromkeys(['one', 'two', 'three', 'four'])
>>> x
# {'one': None, 'two': None, 'three': None, 'four': None}

>>> x = dict.fromkeys(['one', 'two', 'three', 'four'], 0)
>>> x
# {'one': 0, 'two': 0, 'three': 0, 'four': 0}

Пример создания словаря из двух списков:

# список элементов, которые будут ключами 
>>> key = ['one', 'two', 'three', 'four']
# список элементов, которые будут значениями словаря 
>>> value = [1, 2, 3, 4]

# создаем словарь из двух списков
>>> a = {k:v for k, v in zip(key, value)}
>>> a
# {'one': 1, 'two': 2, 'three': 3, 'four': 4}

Где можно применить метод dict.fromkeys().

Например есть список с повторяющимися значениями и необходимо узнать сколько раз какой элемент повторяется в этом списке. Результат получим в виде словаря, где уникальный элемент списка будет ключом, а количество повторений - значением.

Для этого создадим словарь с уникальными ключами, полученными при преобразовании этого списка в множество (множество set() может иметь только уникальные элементы). Значения по умолчанию полученного словаря установим в 0. Далее в цикле по исходному списку будем увеличивать соответствующий ключ словаря на единицу.

# имеем список 
lst = [9, 13, 1, 3, 7, 3, 1, 1, 7, 1, 7, 9]
# создаем ключи будущего словаря (множество set() 
# может иметь только уникальные элементы)
key = set(lst)
# создаем словарь `rez` из списка ключей `key` 
# со значением по умолчанию = 0
rez = dict.fromkeys(key, 0)
# {1: 0, 3: 0, 7: 0, 9: 0, 13: 0}

for key in lst:
    # увеличиваем счетчик 
    # соответствующего ключа на 1
    rez[key] += 1

# смотрим результат
print(rez)
{1: 4, 3: 2, 7: 3, 9: 2, 13: 1}