Как сравнить ключи в словаре питон



Скачай курс
в приложении
Перейти в приложение
Открыть мобильную версию сайта
© 2013 — 2023. Stepik
Наши условия использования и конфиденциальности

Public user contributions licensed under cc-wiki license with attribution required
Сравнение значений внутри словаря

Стоит задача сравнить скиллы клиента и заданной профессии. Пока получается сделать это только вручную, но нужен вариант делать это в цикле (профессий будет много). Можно ли это реализовать с помощью сравнений внутри одного словаря?
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 29 30 31 32
DS = ['Scikit-learn', 'OpenCV', 'PostreSQL', 'NLTK', 'Pandas', 'TensorFlow', 'Python'] print('\nСкиллы для Data Scientist:', DS, '\n') Python = ['Python', 'Django','Flask', 'CI/CD', 'Docker', 'English'] print('Скиллы для Python разработчика:', Python, '\n') SQL = ['SQL', 'PostgreSQL', 'MongoDB', 'English'] print('Скиллы для SQL разработчика:', SQL, '\n') len_ds = len(DS) len_python = len(Python) len_sql = len(SQL) #print('Длина скиллов необходимых для DS =', len_ds) Novichok = ['Pandas', 'Python', 'C++'] print("Новичок обладает данными скиллами:", Novichok, "\n") result_DS=list(set(DS) & set(Novichok)) result_Python=list(set(Python) & set(Novichok)) result_SQL=list(set(SQL) & set(Novichok)) # for i in cikl: # list(set(Novichok)) len_nchk = len(Novichok) #print('Длина скиллов новичка =', len_nchk) print("Соответствие новичка и нужных скиллов для Data Scientist: ", result_DS, ". Процент: ", round((len_nchk/len_ds)*100, 2), "%") print("Соответствие новичка и нужных скиллов для Python разработчика: ", result_Python, ". Процент: ", round((len_nchk/len_python)*100, 2), "%") print("Соответствие новичка и нужных скиллов для SQL разработчика: ", result_Python, ". Процент: ", round((len_nchk/len_sql)*100, 2), "%") dict = {'client': 'Pandas', 'Python', 'C++', 'py': 'Python', 'Django'}
| Здесь вы можете заказать любую студенческую или школьную работу. |
Как сравнить два словаря python и узнать каких ключей нет в том или ином словаре
Мне необходимо написать код, который мог бы отображать ключ которого нет в другом словаре, как это можно сделать? В качестве результата должно получиться:
"key ['python'] not in dict ['cc']" # написал для примера
Отслеживать
задан 14 сен 2021 в 14:00
869 3 3 золотых знака 8 8 серебряных знаков 30 30 бронзовых знаков
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Ключи словаря — это множество. Множества можно вычитать:
a = b = print(a.keys()-b.keys()) print(b.keys()-a.keys())
Т.е. в данном случае множество ключей первого словаря целиком есть во втором словаре.
А вот во втором словаре не хватает двух ключей относительно первого словаря.
Отслеживать
ответ дан 14 сен 2021 в 14:05
69.5k 5 5 золотых знаков 20 20 серебряных знаков 51 51 бронзовый знак
+1, не знал, что ключи словаря могут играть роль множества, точнее что этим занимается тип dict_keys , хотя проверку isinstance на set проваливает 🙂
14 сен 2021 в 14:51
@gil9red Да я сам немного удивился, что к множеству не нужно приводить, проверил на всякий — и так прокатило )
14 сен 2021 в 16:02
Можно через множества получить разницу в ключах словарей
d1 = d2 = result = set(d1).difference(set(d2)) if result: print(f'В d2 нет ключей d1: ') else: print('В d1 все ключи d2') result = set(d2).difference(set(d1)) if result: print(f'В d1 нет ключей d2: ') else: print('В d2 все ключи d1')
В d1 все ключи d2 В d1 нет ключей d2:
UPD.
Вместо difference можно использовать оператор — , пример:
result = set(d1) - set(d2)
Словари (dict) и работа с ними. Методы словарей

Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.
Словари в Python — неупорядоченные коллекции произвольных объектов с доступом по ключу. Их иногда ещё называют ассоциативными массивами или хеш-таблицами.
Чтобы работать со словарём, его нужно создать. Сделать это можно несколькими способами. Во-первых, с помощью литерала:
Во-вторых, с помощью функции dict:
В-третьих, с помощью метода fromkeys:
В-четвертых, с помощью генераторов словарей, которые очень похожи на генераторы списков.
Теперь попробуем добавить записей в словарь и извлечь значения ключей:
: Как видно из примера, присвоение по новому ключу расширяет словарь, присвоение по существующему ключу перезаписывает его, а попытка извлечения несуществующего ключа порождает исключение. Для избежания исключения есть специальный метод (см. ниже), или можно перехватывать исключение.
Что же можно еще делать со словарями? Да то же самое, что и с другими объектами: встроенные функции, ключевые слова (например, циклы for и while), а также специальные методы словарей.
Методы словарей
dict.clear() — очищает словарь.
dict.copy() — возвращает копию словаря.
classmethod dict.fromkeys(seq[, value]) — создает словарь с ключами из seq и значением value (по умолчанию None).
dict.get(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а возвращает default (по умолчанию None).
dict.items() — возвращает пары (ключ, значение).
dict.keys() — возвращает ключи в словаре.
dict.pop(key[, default]) — удаляет ключ и возвращает значение. Если ключа нет, возвращает default (по умолчанию бросает исключение).
dict.popitem() — удаляет и возвращает пару (ключ, значение). Если словарь пуст, бросает исключение KeyError. Помните, что словари неупорядочены.
dict.setdefault(key[, default]) — возвращает значение ключа, но если его нет, не бросает исключение, а создает ключ со значением default (по умолчанию None).
dict.update([other]) — обновляет словарь, добавляя пары (ключ, значение) из other. Существующие ключи перезаписываются. Возвращает None (не новый словарь!).
dict.values() — возвращает значения в словаре.
Для вставки кода на Python в комментарий заключайте его в теги