Подсчет ключей в словаре и сортировка
Перебор ключей в словаре
Приступил к изучению питона, сейчас полно всяких бесплатных курсов и вот проходя один из них.
Перебор ключей по значению в словаре
Как можно перебрать значения словаря, чтобы получить ключи? К примеру в словаре A при вводе.

Хранение ключей и значений в словаре
Мне нужно в словарь записать пары ключ и значение. Но в ключах есть одинаковые значения и.
Подсчитать количество ключей в словаре
Пусть дан словарь. Посчитайте и выведите сколько в словаре ключей.

Как выдрать последние 10 ключей в словаре
Подскажите пожалуйста! Есть словарь(в нем есть число(1-80), и сколько раз оно повторяется)
![]()
![]()
35345 / 19945 / 4179
Регистрация: 12.02.2012
Сообщений: 33,093
Записей в блоге: 13
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28
from collections import defaultdict import datetime # просто, чтобы желтым вызовы модуля datetime не горели data = [{'date': datetime.date(2022, 8, 20), 'type': 'WRITE'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'WRITE'}] dset=set() for di in data: dset.add(di['date']) res={} for cdat in sorted(list(dset)): cdict={} cr=0 cw=0 for di in data: if not (di.get('date') == cdat): tp=di['type'] if tp=='READ': cr+=1 else: cw+=1 cdict={'READ':cr,'WRITE':cw} res[cdat]=cdict print(res)
Замечание: сортировка по дате для словаря роли не играет. И зачем тебе datetime? Не проще ли представлять даты строками: «2022/08/18»? Будет то же самое, но проще.
Am I evil? Yes, I am!
![]()
![]()
16119 / 9755 / 2730
Регистрация: 21.10.2017
Сообщений: 21,624
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
import datetime data = [{'date': datetime.date(2022, 8, 20), 'type': 'WRITE'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'READ'}, {'date': datetime.date(2022, 8, 18), 'type': 'WRITE'}] res = dict() [res.setdefault(item['date'], {}).setdefault(item['type'], 0) for item in data] for item in data: res[item['date']][item['type']] += 1 print('\n'.join(f':' for k, v in sorted(res.items(), key=lambda x: x[0])))
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
Помогаю со студенческими работами здесь
Отображение ключей в словаре как чисел в двоичном формате
Здравствуйте! Я разыгрываю генератор, который выдает некие значения в двоичном представлении по.

Подсчёт слов в словаре
Приветствую, народ! Буду краток, в общем, у меня есть словарь, в котором нужно при выводе списка.
Подсчет дубликатов ключей в объекте
Коллеги, подскажите почему на es5 не работает? tempData.countProduct = new.
Сортировка по убыванию в словаре
Мне надо сделать сортировку чтобы выводилось в порядке убывания количества повторений. .

Сортировка значинений в словаре
d = Есть словарь как я могу используя это создать массив с рассортированными.

Сортировка словаря в словаре по значению
Всем доброго дня! Есть словарь примерно такой структуры: Dictionary<string.
dict (словарь)
obj — Первым необязательным позиционным аргументом может являться отображение или итерирующийся объект (при этом каждый его элемент должен быть тоже итерирующемся и содержать ровно два объекта).
**kwargs — Поддерживаются также необязательные именованные аргументы. При использовании вкупе с позиционными аргументами и совпадении ключей значениями из именованных пользуются приоритетом.
Словари являются отображениями.
Словари являются изменяемыми объектами.
Объявление
В коде словари могут быть объявлены при помощи фигурных скобок — <> .
my_dict = 'key': 'value',
'sub_dict': <>,
2: [1, 2, 3, 4],
>
# Словарь как слияние других словарей
dict_one =
dict_two =
my_dict = **dict_one,
**dict_two,
> #
Кроме того, можно объявить их при помощи конструктора dict().
# Пустой словарь.
my_dict = dict()
# Словарь из итерирующегося объекта.
my_dict = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
# Словарь из именованных аргументов.
my_dict = dict(one=1, two=2, three=3)
# Словарь из списка кортежей.
my_dict = dict([('two', 2), ('one', 1), ('three', 3)])
Ключи
Ключами словаря могут являться только объекты, поддерживающие хеширование. Таким образом, использовать в качестве ключей списки, словари и другие изменяемые типы не получится.
Если в словарь будут добавлены несколько значений с одним и тем же ключом, словарь сохранит последнее.
Не рекомендуется использоваться в качестве ключей числа с плавающей запятой, так как они хранятся в памяти в виде приближений.
Порядок ключей
Данные в обычном словаре упорядочены по очередности добавления ключей, начиная с +py3.6 (в +py2.7 — не упорядочены, но последовательность детерминирована, воспроизводима; в +py3.5 — не упорядочены, последовательность не детерминирована, не воспроизводима между запусками).
Если требуется хранить порядок, в котором в словарь были добавлены элементы (например для обхода этих элементов), следует использовать collections.OrderedDict().
Значения
В качестве значений могут использоваться любые объекты.
Получение значений
Доступ к значениям производится при помощи ключей.
Если ключ отсутствует в словаре, возбуждается исключение KeyError.
+py2.5 Чтобы изменить это поведение можно в наследнике dict определить метод __missing__(key), в котором описать нужные действия при отсутствии ключа.
my_dict =
my_value = my_dict['key'] # value
Установка значений
Кроме установки значений при создании словаря, можно дополнять его по мере надобности.
my_dict =
my_dict['new_key'] = 'new_value' # Добавляем новый элемент словаря.
Определение наличия/отсутствия элемента
+py2.2 Определить, присутствует ли ключ в словаре можно при помощи конструкции in.
+py2.2 Определить, отсутствует ли ключ в словаре можно при помощи антонимичной конструкции not in.
my_dict =
# in
# Ключ 'key' существует, поэтому 'my_key_present' True
my_key_present = 'key' in my_dict
# Ключ 'another_key' отсутствует в словаре, поэтому 'my_key_present' False
my_key_present = 'another_key' in my_dict
# not in
# Ключ 'key' существует, поэтому 'my_key_absent' False
my_key_absent = 'key' not in my_dict
# Ключ 'another_key' отсутствует в словаре, поэтому 'my_key_absent' True
my_key_absent = 'another_key' not in my_dict
Количество элементов в словаре
Количество элементов можно получить, используя функцию len().
my_dict =
my_dict_length = len(my_dict) # 1
Детали реализации CPython
Словари реализованы при помощи динамических хеш-таблиц. По сравнению с двоичными деревьями, это, в большинстве случаев, даёт выигрыш при получшении значений (наиболее часто используемая операция); кроме этого упрошается реализация.
Для каждого ключа при помощи функции hash() вычисляется хеш-код. Код этот широко варьируется в зависимости от ключа и данных процесса (например, хеш для «Python» может быть -539294296 , в то время как для «python» — отличается от первого одним битом — он будет 1142331976 ). Хеш используется для определения места (во внутреннем массиве), где хранится значение. В случае если все используемые вами ключи будут иметь различные хеши, для получения значения по ключу будет затрачено постоянное время — O(1).
На заметку
О сложности основных операций для данного типа можно узнать из статьи «Сложность операций со словарями».
Как вывести количество повторений значений словаря в списке с вложенными словарями?
Я читала про модуль collections.Counter, но не могу понять как его применить конкретно к списку со вложенными словарями. Вложенные структуры — новая тема для меня.
- Вопрос задан более трёх лет назад
- 1681 просмотр
Комментировать
Решения вопроса 2

yay ✌️ t.me/kshnkvn
students = [ , , , , , ] names = dict() for student in students: if student['first_name'] not in names.keys(): names[student['first_name']] = 1 else: names[student['first_name']] += 1 for name, count in names.items(): print(f': ')
names = [s['first_name'] for s in students] for name in set(names): print(f': ')
Ответ написан более трёх лет назад
Посчитать количество элементов в словаре с вложениями
Как наиболее оптимально перебрать весь словарь и посчитать количество отдельных элементов, чтобы не писать слишком много циклов. Конечным значением может быть либо список (добавлять длину списка), либо строка (добавлять 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 фев в 13:08
Елена Сергеева Елена Сергеева
495 3 3 серебряных знака 10 10 бронзовых знаков
воспользуйтесь рекурсией
20 фев в 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)
