Как вывести ключ словаря?
Мне нужно вывести на экран ключ словаря, соответствующий элементу списка, который есть в словаре.
Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
задан 10 мая 2020 в 7:37
POLTERGEIST POLTERGEIST
13 5 5 бронзовых знаков
Обычно словарь используют наоборот. По ключу ищут элемент. В этом его смысл. Может, вам просто поменять местами ключи и значения?
10 мая 2020 в 7:45
Я пробовал, а результат такой же был, я поэтому решил попробовать поменять местами
10 мая 2020 в 7:46
@POLTERGEIST, можно попробовать записывать два значения разом. Первое например ‘Питон’ : ‘Python’ , а второе ‘Python’ : ‘Питон’
10 мая 2020 в 8:57
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
Возможно, это решит ваш вопрос.
Когда в словаре находится ключ/значение, соответствующее искомому, возвращается пара ключ, значение в виде кортежа
>>> a = >>> def search(d: dict, key): . lst = zip(a.keys(), a.values()) . for k, v in lst: . if key in (k, v): . return k, v . >>> search(a, None) ('5', None) >>> search(a, '3') ('3', 4)
Отслеживать
ответ дан 10 мая 2020 в 10:27
4,507 2 2 золотых знака 9 9 серебряных знаков 28 28 бронзовых знаков
Вместо lst = zip(a.keys(), a.values()) можно написать просто lst = a.items()
14 мая 2020 в 13:01
@insolor спасибо, буду знать =)
14 мая 2020 в 13:27
a = def search(a, b): c = list(a.values()).index(b) return list(a.keys())[c] print(search(a, 100))
Отслеживать
ответ дан 14 мая 2020 в 12:09
user388629 user388629
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.26.8280
Смена мест между ключами и их значениями
Необходимо сделать так, чтобы имена значений находились на местах ключей, а ключи, в свою очередь, находились на местах значений, к которым они присоединены. Пробовал сделать подобным образом:
>>>f2e = list(e2f.items()) >>>f2e >>>[('dog', 'chien'), ('cat', 'chat'), ('walrus', 'morse')] >>>for x in f2e: . x.reverse() . Traceback (most recent call last): File "", line 2, in AttributeError: 'tuple' object has no attribute 'reverse'
И только после вспомнил, что кортежи неизменяемые 🙂 Посоветуйте, как быть?
Отслеживать
49.3k 17 17 золотых знаков 57 57 серебряных знаков 101 101 бронзовый знак
задан 10 июл 2017 в 17:35
97 1 1 золотой знак 1 1 серебряный знак 8 8 бронзовых знаков
4 ответа 4
Сортировка: Сброс на вариант по умолчанию
Отслеживать
ответ дан 10 июл 2017 в 17:37
Sergey Gornostaev Sergey Gornostaev
66.6k 6 6 золотых знаков 54 54 серебряных знака 113 113 бронзовых знаков
10 июл 2017 в 17:50
Чтобы поменять местами ключи и значения в словаре:
f2e = dict(zip(e2f.values(), e2f.keys()))
Если значения неуникальны, то последнее среди дубликатов выигрывает — это значит, результат может меняться в зависимости от конкретной реализации Питона и даже от запуска к запуску на некоторых версиях, так как Питон не гарантирует порядок записей для словарей (до Python 3.7)
Отслеживать
ответ дан 10 июл 2017 в 18:04
52.4k 11 11 золотых знаков 110 110 серебряных знаков 312 312 бронзовых знаков
Если что-то изменит исходный словарь между вызовами values() и keys() , в результирующем словаре не будет соответствия между ключами и значениями.
10 июл 2017 в 18:12
@SergeyGornostaev многопоточный код это отдельный вопрос — не имеет смысла рассматривать, если вопрос специально не об этом. Что вы думаете с вашим кодом произойдёт, если словарь во время итерации изменится (RuntimeError)
10 июл 2017 в 18:37
@SergeyGornostaev, объекты возвращенные методами values() и keys() — это то что в Python 2.7 называлось dictionary view объектами. При изменении исходного словаря соответственно меняются и объекты возвращенные методами values() и keys() . Если изменение произошло между вызовами этих методов, ничего плохого не случится: ideone.com/Xgxw2B
10 июл 2017 в 21:07
@insolor верно что значения, возвращаемые keys()/values() в Питоне 3, аналогичны значениям viewkeys(), viewvalues() из Питона 2 (название намекает, что это дополнительный вид на словарь — поэтому изменения видны, не копия), как раз поэтому RuntimeError произойдёт, если параллельно с итерацией какой-то другой код пытается словарь изменить (считать ли возможность RuntimeError «плохим» исходом— от задачи зависит).
Смена мест ключей и значений в словаре
В Питоне есть dict comprehensions. Цикл по парам ключ/значение, вложенный цикл по значению:
import pprint arr = < 'apple:': ['apple1,', 'apple2'], 'banana': ['banana1', 'banana2', 'banana3'] >pprint.pprint()
Отслеживать
ответ дан 23 дек 2020 в 13:55
Stanislav Volodarskiy Stanislav Volodarskiy
34k 3 3 золотых знака 20 20 серебряных знаков 56 56 бронзовых знаков
Похожие
Подписаться на ленту
Лента вопроса
Для подписки на ленту скопируйте и вставьте эту ссылку в вашу программу для чтения RSS.
Дизайн сайта / логотип © 2024 Stack Exchange Inc; пользовательские материалы лицензированы в соответствии с CC BY-SA . rev 2024.4.26.8280
Как поменять местами ключ и значение в Python?
Этот код создает новый словарь, где ключи и значения меняются местами. Новые ключи становятся значениями, а новые значения — ключами. Например, если исходный словарь выглядит так:
dict =
После применения кода получим следующий результат:
new_dict =
Детальный ответ
Как поменять местами ключ и значение в Python
Иногда при работе с данными в Python возникает необходимость поменять местами ключи и значения в словаре. В этой статье мы рассмотрим несколько способов выполнить данную операцию.
1. Использование генератора словарей
Первый способ основан на использовании генератора словарей.
# Исходный словарь original_dict = # Используем генератор словарей для создания нового словаря swapped_dict = print(swapped_dict)
В данном коде мы используем генератор словарей, чтобы создать новый словарь, в котором ключи и значения исходного словаря поменяны местами. Результат будет выглядеть следующим образом:
2. Использование цикла
Второй способ заключается в использовании цикла для создания нового словаря с поменянными ключами и значениями.
# Исходный словарь original_dict = # Создаем новый словарь swapped_dict = <> for key, value in original_dict.items(): swapped_dict[value] = key print(swapped_dict)
В этом случае мы создаем новый пустой словарь и затем используем цикл для прохода через исходный словарь и добавления в новый словарь пар ключ-значение с поменянными местами. Результат будет такой же, как и в первом примере.
3. Использование функции zip
Третий способ основан на использовании функции zip для объединения ключей и значений, а затем создания нового словаря.
# Исходный словарь original_dict = # Используем функцию zip и генератор словарей для создания нового словаря swapped_dict = print(swapped_dict)
В этом примере мы используем функцию zip для объединения ключей и значений исходного словаря в пары, а затем с помощью генератора словарей создаем новый словарь с поменянными ключами и значениями.
Заключение
Вы можете использовать любой из этих способов для того, чтобы поменять местами ключи и значения в словаре в Python. Все они предоставляют эффективные и лаконичные решения.