Как сравнить ключи в словаре питон
Перейти к содержимому

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

  • автор:

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

Скачай курс
в приложении

Перейти в приложение
Открыть мобильную версию сайта

© 2013 — 2023. Stepik

Наши условия использования и конфиденциальности

Get it on Google Play

Public user contributions licensed under cc-wiki license with attribution required

Сравнение значений внутри словаря

Author24 — интернет-сервис помощи студентам

Стоит задача сравнить скиллы клиента и заданной профессии. Пока получается сделать это только вручную, но нужен вариант делать это в цикле (профессий будет много). Можно ли это реализовать с помощью сравнений внутри одного словаря?

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 3 логотип

Сегодня я расскажу о таком типе данных, как словари, о работе со словарями, операциях над ними, методах, о генераторах словарей.

Словари в 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 в комментарий заключайте его в теги

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *