Подсчет количества элементов в словаре Python
Операции len(dict) возвращает количество элементов в словаре dict .
len(dictview) так же возвращает количество элементов в словаре, если dictview является представлением словаря dict , таким как dict.keys() , dict.values() и dict.items() .
Примеры получения длины словаря (количества элементов в словаре):
>>> x = "one": 1, "two": 2, "three": 3, "four": 4> >>> len(x) # 4 >>> keys = x.keys() >>> len(keys) # 4 >>> values = x.values() >>> len(values) # 4 >>> items = x.items() >>> len(items) # 4
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
ХОЧУ ПОМОЧЬ
ПРОЕКТУ
Dictionary (Словари)
Словарь (неупорядоченные коллекции из разных объектов с доступом по ключу) создаётся при помощи фигурных скобок, внутри которых указываются пары «ключ-значение» через запятые. Также можно создать пустой словарь и позже добавлять пары. В Python словарь определён в классе dict. Иногда используют термин ассоциативные массивы или хеш-таблицы.
catDictionary = emptyDictionary = <>
Другие варианты создания словарей.
С помощью функции dict():
dictionary = dict(short='dict', long='dictionary') print(dictionary) # numberDict = dict([(1, 3), (2, 9)]) print(numberDict) #
С помощью метода fromkeys():
noneDictionary = dict.fromkeys(['a', 'b']) print(noneDictionary) # fullDictionary = dict.fromkeys(['a', 'b'], 9) print(fullDictionary) #
И ключи и значения в одном словаре могут быть разных типов (строки, числа).
Ключи и значения могут выводиться в различном порядке, потому что словари, в отличие от списков, не упорядочены (не ранжированы). В словаре нет первого элемента, потому что нет какого-нибудь порядка расположения элементов.
Число пар в словаре можно получить через len.
print(len(catDictionary)) # 3
Доступ к значению можно получить через ключ, указанный в квадратных скобках. Если указать неправильный ключ, то вернётся ошибка.
print(catDictionary["key3"]) # Vaska
Также можно через метод get().
val = catDictionary.get("key2") print(val) # Murzik
При не существующем ключе можно вернуть собственное сообщение.
val = catDictionary.get("key5", "That key is not found") print(val)
Проверить, есть ли проверяемый ключ в словаре можно через оператор in. В успешном случае возвращается True или 1, в противном случае возвращается False или 0.
print("key4" in catDictionary) # 0 print("key1" in catDictionary) # True
Получить все ключи можно через keys(). Метод возвращает значение типа dict_keys.
keys = catDictionary.keys() print(list(keys))
Получить все значения ключей можно через values(). Метод возвращает значение типа dict_values.
values = catDictionary.values() print(list(values)) # ['Murzik', 'Vaska', 'Barsik']
Получить все ключи со значениями можно через items().
items = catDictionary.items() print(items) # dict_items([('key2', 'Murzik'), ('key3', 'Vaska'), ('key1', 'Barsik')])
Чтобы обновить значение в словаре, нужно указать ключ и новое значение.
catDictionary["key1"] = "Ryzhik"
По такому же принципу можно добавить новый ключ со значением.
catDictionary["key4"] = "Murka"
Удалить элемент (ключ-значение) можно через оператор del. Также можно удалить весь словарь.
del catDictionary["key4"] del catDictionary
Если мы не хотим удалять сам словарь, а только очистить его от элементов, то воспользуемся методом clear().
catDictionary.clear() print(catDictionary) # <>
Выражение favorites1 == favorites2 истинно потому, что словари не упорядочены и считаются эквивалентными, если состоят из одинаковых пар ключ-значение.
Списки с одинаковыми значениями элементов, но разным порядком их следования, равны не будут.
favorites1 = favorites2 = favorites1 == favorites2 # True
Метод dict.get() в Python, значение по умолчанию если ключа нет
Значение по умолчанию для отсутствующих ключей в словаре
Синтаксис:
dict.get(key[, default])
Параметры:
- key — ключ словаря
- default — значение по умолчанию
Возвращаемое значение:
- значение ключа key или default если ключа нет.
Описание:
Метод dict.get() возвращает значение для ключа key , если ключ находится в словаре, если ключ отсутствует то вернет значение default .
Если значение default не задано и ключ key не найден, то метод вернет значение None .
Метод dict.get() никогда не вызывает исключение KeyError , как это происходит в операции [получения значения словаря по ключу dict[key] .
Примеры, как работает метод dict.get() :
>>> x = 'one': 1, 'two': 2, 'three': 3, 'four': 4> >>> x.get('two', 0) # 2 >>> x.get('four', 0) # 4 >>> x.get('ten', 0) # 0 >>> >>> print(x.get('six')) # None
Где можно применить метод dict.get() .
Метод dict.get() можно применить, например, для подсчета количества одинаковых элементов последовательности. Допустим есть список чисел или слов (символов) или то и другое и необходимо узнать, сколько раз КАЖДЫЙ элемент встречается в этом списке. Для решения этой задачи создадим пустой словарь, в который будем добавлять в качестве ключа — элемент списка (словари, в качестве ключа могут принимать неизменяемые значения), а в качестве значения будет количество появлений этого элемента в списке.
# имеем список lst = [9, 13, 1, 3, 7, 3, 1, 1, 7, 1, 7, 9] # создаем пустой словарь rez = <> # в процессе итерации по списку for el in lst: # проверяем есть ли в словаре # ключ с элементом `el` if rez.get(el, None): # если есть, то увеличиваем # счетчик с этим ключом не 1 rez[el] += 1 else: # если нет, то создаем такой # ключ со значением, равным 1 rez[el] = 1 # смотрим что получилось print(rez) # # чтобы было нагляднее, можно отсортировать словарь # по значению (количеству появлений элементов в списке) rez_sorted = sorted(rez.items(), key=lambda x: x[1], reverse=True) print(dict(rez_sorted)) #
- ОБЗОРНАЯ СТРАНИЦА РАЗДЕЛА
- Представления словарей dict.keys, dict.values и dict.items
- Исходный словарь для представления dictview.mapping
- Получение списка ключей словаря list(dict)
- Количество элементов в словаре len(dict)
- Доступ к значению словаря по ключу dict[key]
- Добавление/изменение значения словаря по ключу key
- Удаление значения словаря по ключу
- Проверка наличия/отсутствия ключа key в словаре dict
- Проверка наличия/отсутствия значения value в словаре Python
- Проверка наличия/отсутствия пары (key, value) в словаре dict
- Итерирование по ключам и значениям словаря Python
- Метод dict.clear(). Очистить словарь
- Метод dict.copy(), копия словаря
- Метод dict.fromkeys(), словарь с ключами по умолчанию
- Метод dict.get(), значение по умолчанию если ключа нет
- Метод dict.items(), список кортежей
- Метод dict.keys(), список ключей словаря
- Метод dict.values(), список значений словаря
- Метод dict.pop()
- Метод dict.popitem(), получить пару ключ/значение
- Метод dict.setdefault(), получает/вставляет значение ключа
- Метод dict.update(), обновление/дополнение словаря
- Объединение двух словарей в новый словарь Python
- Сортировка словаря по значению и/или ключу
- Обратный порядок/реверс словаря reversed(dict)
- Генератор словаря и его использование
- Фильтр словаря по ключам и/или значениям
- Словарь как фабрика функций
Посчитать количество элементов в словаре с вложениями
Как наиболее оптимально перебрать весь словарь и посчитать количество отдельных элементов, чтобы не писать слишком много циклов. Конечным значением может быть либо список (добавлять длину списка), либо строка (добавлять 1 элемент) Пока что вижу такую реализацию:
c = 0 for k in all_val.keys(): if type(all_val[k]) == list: c += len(all_val[k]) elif type(all_val[k]) == str: c += 1 else: for k2 in all_val[k]: if type(all_val[k][k2]) == list: c += len(all_val[k][k2]) elif type(all_val[k][k2]) == str: c += 1 else: for k3 in all_val[k][k2]: if type(all_val[k][k2][k3]) == list: c += len(all_val[k][k2][k3]) elif type(all_val[k][k2][k3]) == str: c += 1 else: for k4 in all_val[k][k2][k3]: if type(all_val[k][k2][k3][k4]) == list: c += len(all_val[k][k2][k3][k4]) elif type(all_val[k][k2][k3][k4]) == str: c += 1
Отслеживать
задан 20 фев 2023 в 13:08
Елена Сергеева Елена Сергеева
505 3 3 серебряных знака 10 10 бронзовых знаков
воспользуйтесь рекурсией
20 фев 2023 в 13:09
1 ответ 1
Сортировка: Сброс на вариант по умолчанию
Вы можете рекурсивно обойти весь словарь. Вот возможный пример решения. Функция пройдется по всем уровням вложений и посчитает количество элементов в Вашем словаре.
def count_elements(my_dict): c = 0 for v in my_dict.values(): if isinstance(v, dict): c += count_elements(v) elif isinstance(v, list): c += len(v) elif isinstance(v, str): c += 1 return c
my_dict = , 't': >, 'b': <'q': , 'y': , 'k': >, ['1', '2', '3'. ], 'c': <'c': , 'm': >> c = count_elements(my_dict) print(c)