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

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

  • автор:

Как вывести ключ словаря?

введите сюда описание изображения

Мне нужно вывести на экран ключ словаря, соответствующий элементу списка, который есть в словаре.

Отслеживать
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. Все они предоставляют эффективные и лаконичные решения.

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

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