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

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

  • автор:

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

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

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,746 3 3 золотых знака 22 22 серебряных знака 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]) 

Программа Python для проверки того, находятся ли значения словаря в том же порядке, что и в списке

Словарь — это изменяемая структура данных в Python, которая позволяет пользователю хранить данные в формате ключа и значения. Ключ и значение разделяются символом «:». Ключи уникальны, и значения могут повторяться. Значения могут быть заданы как один элемент или несколько элементов в списке. Если мы хотим получить доступ к элементам из словаря, нам нужно использовать ключ. Он предоставляет различные функции и методы для работы со словарями и управления ими.

Существует несколько способов проверить, находятся ли значения в словаре в том же порядке, что и в списке.

Сравнение значений списка и словаря

Функция zip() — это встроенная функция Python, которая принимает несколько итераций в качестве аргументов и возвращает итератор кортежей. Каждый кортеж содержит соответствующие элементы из входных итераций. Другими словами, функция zip() группирует элементы из нескольких итераций вместе на основе их позиций.

Построение списков — это краткий и мощный способ создания списков в Python. Это позволяет нам генерировать новый список путем перебора существующего итерируемого объекта, такого как список, кортеж или строка, и применения выражения или условия к каждому элементу. Результирующий список создается в одной строке кода, что делает синтаксис понятным и понятным.

Пример

В этом подходе мы используем функцию zip() вместе с пониманием списка. Функция zip() для одновременного прохода по списку и словарю. Функция zip() возвращает итератор, который генерирует кортежи, содержащие соответствующие элементы из каждой итерации.

Далее мы будем использовать понимание списка в функции all() для сравнения каждого значения из словаря dict_values с соответствующим элементом из списка list_values . Функция all() возвращает значение True, только если все сравнения имеют значение True. Если длины списка и словаря не равны, итерация остановится на более короткой длине, а дополнительные значения в более длинном контейнере будут игнорироваться.

def check_order(list_values, dict_values): return all(list_val == dict_val for list_val, dict_val in zip(list_values, dict_values)) my_list = [1, 2, 3, 4, 5] my_dict = result = check_order(my_list, my_dict.values()) print(result) 

Выход

True 

Преобразование словаря в список значений

В этом подходе мы преобразуем значения словаря в список, а затем сравниваем его напрямую с заданным списком.

Пример

В этом подходе мы преобразуем значения словаря dict_values.values() в список с помощью функции list(). Затем мы сравниваем этот список с заданным списком напрямую, используя оператор ==. Если два списка равны, это означает, что значения словаря расположены в том же порядке, что и в списке.

def check_order(list_values, dict_values): return list(dict_values.values()) == list_values my_list = [1, 2, 3, 4, 5, 6] my_dict = result = check_order(my_list, my_dict) print(result) 

Выход

False 

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

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

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

© 2013 — 2023. Stepik

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

Get it on Google Play

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

Изучаем словари в Python

Словари в Python — это фундаментальный тип данных , представленный в виде пары ключ-значение. Они описываются как объект сопоставления, который сопоставляет хэшируемые значения с произвольными объектами.

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

Словари создаются несколькими способами. Наиболее распространенный метод — указание в фигурных скобках списка разделенных запятыми пар ключ — значение:

>>> sample_dict = >>> sample_dict

Также можно использовать для создания словаря dict(). Она принимает последовательность аргументов ключевых слов:

>>> numbers = dict(one=1, two=2, three=3) >>> numbers >>> info_list = [(‘first_name’, ‘James’), (‘last_name’, ‘Doe’), (’email’, ‘jdoes@gmail.com’)] >>> info_dict = dict(info_list) >>> info_dict

В первом примере используется последовательность ключевых слов dict(). Вы можете представить их как серию ключевых слов со знаком равенства между ними и их значением.

Во втором примере показано, как создать список с тремя кортежами. Затем этот список передается в dict(), чтобы преобразовать его в словарь.

Обновлено: 2023-06-24 20:07:29 Вадим Дворников автор материала

Доступ к словарям

Вы можете получить доступ к любому значению в словаре через ключ. Если ключ не найден, то выведется ошибка KeyError.

Рассмотрим, как использовать словарь.

>>> sample_dict = >>> sample_dict['first_name'] 'James'

Чтобы получить значение first_name, нужно использовать следующий синтаксис: dictionary_name[key]. Теперь попробуем получить ключ, который не существует.

>>> sample_dict['address'] Traceback (most recent call last): Python Shell, prompt 118, line 1 builtins.KeyError: 'address'

Это не сработало. Мы попросили словарь предоставить значение, которого нет. Можно использовать ключевое слово Python in, чтобы спросить, есть ли ключ в словаре.

>>> 'address' in sample_dict False >>> 'first_name' in sample_dict True

А также проверить, нет ли ключа в словаре, используя ключевое слово Python not:

>>> 'first_name' not in sample_dict False >>> 'address' not in sample_dict True

Методы словарей Python

В словарях есть специальные методы, которые можно использовать:

d.get(ключ[, по умолчанию])

Метод get() позволяет получить значение. Ему нужно указать ключ для поиска. Можно вернуть значение по умолчанию, если ключ не будет найден. По умолчанию это None:

>>> print(sample_dict.get('address')) None >>> print(sample_dict.get('address', 'Not Found')) Not Found

Первый пример иллюстрирует, что происходит, если попытаться получить ключ, которого не существует без установки значения get по умолчанию. В этом случае метод возвращается None.

Во втором примере показано, как установить по умолчанию строку “Not Found”.

d.clear()

Метод clear() используется, чтобы удалить все элементы из словаря.

>>> sample_dict = >>> sample_dict >>> sample_dict.clear() >>> sample_dict <>

d.copy()

Чтобы создать простую копию словаря, используется метод copy().

>>> sample_dict = >>> copied_dict = sample_dict.copy() >>> copied_dict

Если в словаре есть объекты или словари, то можно столкнуться с логическими ошибками. Так как изменение одного словаря может повлиять на его копию. В этом случае необходимо использовать модуль Python copy, в котором есть функция deepcopy(). Она создаетотдельную копию словаря.

d.Items()

Метод items() возвращает новое представление из элементов словаря.

>>> sample_dict = >>> sample_dict.items() dict_items([('first_name', 'James'), ('last_name', 'Doe'), ('email', 'jdoe@gmail.com')])

Этот объект представления будет меняться по мере изменения самого словаря.

d.keys()

Чтобы получить представление ключей, которые есть в словаре, используется метод keys(). Он предоставляет динамическое представление ключей словаря. Можно представление, а также проверить принадлежность представлению по ключевому слову in.

>>> sample_dict = >>> keys = sample_dict.keys() >>> keys dict_keys(['first_name', 'last_name', 'email']) >>> 'email' in keys True >>> len(keys) 3

d.values()

Метод values() возвращает объект динамического представления значений словаря.

>>> sample_dict = >>> values = sample_dict.values() >>> values dict_values(['James', 'Doe', 'jdoe@gmail.com']) >>> 'Doe' in values True >>> len(values) 3

d.pop(ключ[, по умолчанию])

Чтобы удалить ключ из словаря, используется метод pop(). Он принимает ключ и строку параметра по умолчанию. Если не установить значение по умолчанию и ключ не будет найден, то выведется ошибка KeyError.

>>> sample_dict = >>> sample_dict.pop(‘something’) Traceback (most recent call last): Python Shell, prompt 146, line 1 builtins.KeyError: ‘something’ >>> sample_dict.pop(‘something’, ‘Not found!’) ‘Not found!’ >>> sample_dict.pop(‘first_name’) ‘James’ >>> sample_dict

d.popitem()

Метод popitem() используется для удаления и возвращает пары ключ-значение из словаря в порядке «последним добавлен — первым удален». Если метод вызывается в пустом словаре, то отобразится KeyError.

>>> sample_dict = >>> sample_dict.popitem() (’email’, ‘jdoe@gmail.com’) >>> sample_dict

d.update([другие])

Метод обновляет словарь другими парами ключ-значение, перезаписывая существующие ключи. Возвращает None.

>>> sample_dict = >>> sample_dict.update([(‘something’, ‘else’)]) >>> sample_dict

Изменение словаря

Предположим, что нужно добавить новую пару ключ-значение.

>>> sample_dict = >>> sample_dict[‘address’] = ‘123 Dunn St’ >>> sample_dict

Чтобы добавить новый элемент в словарь, можно использовать квадратные скобки для установки ключа и значения . Если нужно обновить существующий ключ, можно сделать следующее:

>>> sample_dict = >>> sample_dict[’email’] = ‘jame@doe.com’ >>> sample_dict

В этом примере для sample_dict[’email’] устанавливается значение jame@doe.com. Всякий раз, когда для ранее существовавшего ключа задается новое значение, перезаписывается предыдущее значение.

Удаление элементов из словаря

Чтобы удалить ключ из словаря, используйте ключевое слово del:

>>> sample_dict = >>> del sample_dict[’email’] >>> sample_dict

Так вы указываете Python удалить ключ «email» из sample_dict.

Также для удаления ключа используется метод pop(), который был описан в предыдущем разделе.

>>> sample_dict = >>> sample_dict.pop(’email’) ‘jdoe@gmail.com’ >>> sample_dict

При этом метод словаря pop() возвращает значение, которое удаляется.

Заключение

Словари удобно использовать для быстрого поиска всех типов данных. Если нужен словарь, который создаст значение по умолчанию по несуществующему ключу, примените Python collections. У него есть класс defaultdict, предназначенный для подобного варианта использования.

Вадим Дворников автор-переводчик статьи « Python 101 – Learning About Dictionaries »

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

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