Сравнение значений внутри словаря
Стоит задача сравнить скиллы клиента и заданной профессии. Пока получается сделать это только вручную, но нужен вариант делать это в цикле (профессий будет много). Можно ли это реализовать с помощью сравнений внутри одного словаря?
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'}
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
Ответы с готовыми решениями:
Сравнение словаря и списка
Всем привет я новичок в Питоне вопрос как мне правильно написать строку сравнения списка num и.

Сортировка значений в ключах словаря
Всем привет Помогите отсортировать словарь по y сохраняя порядок ключей и не затрагивая x: x =.

Составление словаря из n — ключей и m — значений
Python 3.5, windows. Подскажите, пожалуйста, алгоритм чтобы составить словарь из n-ключей и m-.
Сравнить значения словаря из списка и при совпадении выдать ключ из словаря
В чем у вас проблема? И по какому принципу устанавливается связь между ключом словаря и элементом списка?
13 дек 2017 в 8:51
Поправьте заголовок или тело вопроса — они полностью противоположные
13 дек 2017 в 8:52
mkkik, ну собственно проблема в самом написании (
13 дек 2017 в 9:05
mkkik на счет принципа связи между ключом словаря и элемента списка меня тоже интересует, может связь нельзя выполнить
13 дек 2017 в 10:16
@rrron, а что вам не так в моем коде? просто, любопытно 🙂 можно иначе — eval.in/918348
13 дек 2017 в 10:26
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
In [24]: dictionary = In [25]: lst = ["val", "val2", "val3"] In [26]: reversed_dict = In [27]: result = [reversed_dict[x] for x in list(set(dictionary.values()) & set(lst))] In [28]: result Out[28]: ['key', 'key2']
Но вариант в ответе ранее лучше и проще 🙂
In [35]: list(filter(lambda x: dictionary[x] in lst, dictionary)) Out[35]: ['key', 'key2']
Отслеживать
ответ дан 13 дек 2017 в 11:14
Pavel Durmanov Pavel Durmanov
5,728 3 3 золотых знака 21 21 серебряный знак 44 44 бронзовых знака
Второй вариант подошел, супер! )
13 дек 2017 в 14:56
я не умею про питон, но что-то такое должно работать, может, неэффективно
for i in dictionary : for j in list : if j == dictionary[i] : print(i)
И если это не учебное задание, то однострочно. Впрочем, это есть по ссылке в комменте
print([k for k,v in dictionary.items() if list.count(v)])
Или даже по мотивам ответа @Alban
print([k for k,v in dictionary.items() if v in list])
Как сравнить значения словаря в Питон 3.5?
У меня есть массив словарей. После пользовательского ввода формируется новый словарь, который нужно сравнить со всеми словарями массива и вернуть только те словари, которые подошли под запрос. Подскажите пожалуйста, как это эффективно провернуть? При этом возможно, что в пользовательском словаре для поиска будут ключи, которых нет в некоторых словарях из массива, а так же ключей может быть меньше. В примере я должен получить третий словарь.
def sample(): obj = [< 'a': 1, 'b': 2, 'c': 3 >, < 'a': 4, 'b': 23 >, < 'a': 1, 'b': 3, 'c': 4 >] return obj def search(): custom =
- Вопрос задан более трёх лет назад
- 4070 просмотров
Комментировать
Решения вопроса 1
result = [] for i in obj: if all(item in i.items() for item in custom.items()): result.append(i) return result
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ответы на вопрос 1
Если данных много, можете сделать инвертированный индекс, ( напр. ключ (‘a’, 1) будет содержать список всех словарей где есть <'a': 1>), таким образом нужно будет перебирать не все данные, а только часть. Будет работать гораздо быстрее.'a':>
Ответ написан более трёх лет назад
Комментировать
Нравится 1 Комментировать
Ваш ответ на вопрос
Войдите, чтобы написать ответ

- Python
Почему не проходит код для решения задачи на leetcode?
- 1 подписчик
- 4 минуты назад
- 4 просмотра

- Python
- +1 ещё
Почему текстовый редактор и консоль по-разному присваивают ссылки на переменные Python?
- 1 подписчик
- 26 минут назад
- 9 просмотров
Как сравнить 2 словаря в python
Для сравнения двух словарей в Python можно использовать методы и операторы, предназначенные для работы со словарями.
Если вам нужно найти ключи, которые есть в обоих словарях, и сравнить значения для этих ключей, можно использовать метод items() для получения списка кортежей, содержащих ключи и значения из обоих словарей, а затем пройти в цикле по этому списку и сравнить значения для каждого ключа. Например:
python
dict1 =
dict2 =
for key, value in dict1.items():
if key in dict2:
if dict2[key] == value:
print(f»The value for key » is the same in both dictionaries.»)
else:
print(f»The value for key » is different in both dictionaries.»)
else:
print(f»Key » is only in the first dictionary.»)
for key, value in dict2.items():
if key not in dict1:
print(f»Key » is only in the second dictionary.»)
В этом примере мы используем циклы for для перебора ключей и значений в каждом словаре. Если ключ есть и в первом, и во втором словаре, мы сравниваем значения для этого ключа. Если значение одинаковое, мы выводим сообщение, что значение для данного ключа одинаковое в обоих словарях. Если значение разное, мы выводим сообщение, что значение для данного ключа разное в обоих словарях. Если ключ есть только в одном из словарей, мы выводим сообщение об этом.
Если вам нужно найти только те ключи, которые есть в обоих словарях, но значения не важны, можно использовать метод keys() для получения списка ключей из каждого словаря и оператор & для нахождения пересечения списков. Например:
python
dict1 =
nooB 1mmrУченик (193) 9 месяцев назад
можете написать что не влезло в комментарии пожалуйста
dsajk Ученик (187) dict1 = < ># Сравнение ключей словарей print(set(dict1.keys()) == set(dict2.keys())) # False # Сравнение значений словарей print(set(dict1.values()) == set(dict2.values())) # False # Сравнение ключей и значений словарей print(dict1.items() == dict2.items()) # False print(dict1.items() — dict2.items()) # <('Alien Red', [0, 18177]), ('Ammo Wooden Box', [0, 60]), ('Ace Door', [0, 316]), ('Abyss Crossbow', [0, 639]), ('Acid Rock', [0, 554])>