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

Как сравнить значения в словаре python

  • автор:

Как сравнить словари Python

Сравнить словари можно с помощью операторов == и != . Смотрите пример:

dct1 = < 'a': 1, 'b': 2, 'c': 3 >dct2 = < 'a': 4, 'b': 5, 'c': 6 >dct3 = < 'a': 4, 'b': 5, 'c': 6 >print(f’dct1 == dct2:’, dct1 == dct2) print(f’dct2 == dct3:’, dct2 == dct3) print(f’dct1 != dct2:’, dct1 != dct2)

Результат выполнения кода:

‘dct1 == dct2:’ False ‘dct2 == dct3:’ True ‘dct1 != dct2:’ True

Смотрите также

  • метод update ,
    который обновляет словарь ключами и значениями другого словаря

Сравнить значения словаря из списка и при совпадении выдать ключ из словаря

В чем у вас проблема? И по какому принципу устанавливается связь между ключом словаря и элементом списка?

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,756 3 3 золотых знака 23 23 серебряных знака 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 =
  • Вопрос задан более трёх лет назад
  • 4225 просмотров

Комментировать

Решения вопроса 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>), таким образом нужно будет перебирать не все данные, а только часть. Будет работать гораздо быстрее.

Ответ написан более трёх лет назад

Комментировать

Нравится 1 Комментировать

Ваш ответ на вопрос

Войдите, чтобы написать ответ

python

  • Python

Как вывод команды help в терминал передать в переменную?

  • 1 подписчик
  • 7 минут назад
  • 8 просмотров

Как сравнить значения словаря со списком и при совпадении напечатать ключ?

Находил решение в интернете, но подстроить под мой случай не смог, получаю ошибки. Вот мой гавнокод:

a = input().split() # Нужно вводить строки через пробел: a ab abc aab n = int(input()) # Вводим одно число index = [] for s in a: index.append([s.find(c) for c in s]) print(index) # Выводит вложенные списки вида [[a,b,c], [d,e,f]] dict_ = dict(zip(a, index)) print(dict_) # Превращает вложенный список в словарь вида temp = [] count = 0 lst = [] while n != 0: word = input().split() for s in word: lst = [s.find(ss) for ss in s] print(lst) # Циклически выводит списки: [a,b,c] n -= 1

Код разделен на две части, первая часть создает словарь, а вторая просит вводить строки, которые нужно вводить по очереди. Дальше не реализовал, но после каждого ввода программа должна сравнивать её со значениями словаря и при совпадении поместить ключ этого значения в переменную и распечатать её, а если не совпадает, то запрашивает вводить еще, пока не закончатся попытки, указанные в переменной n. Пожалуйста, помогите дописать эти несколько строчек в последнем цикле.

  • Вопрос задан более трёх лет назад
  • 3107 просмотров

2 комментария

Простой 2 комментария

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

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