Рубрики
Без рубрики

Как отменить / инвертировать словарное сопоставление

В Python словарь представляет собой реализацию структуры данных, известную наиболее часто в качестве ассоциативного массива. Эта коллекция пар клавишных значений отображает ключ к соответствующему значению, которое может быть реализовано во многих отношениях, познавая цену яблок и горох, чтобы поставить в приложение для продуктов магазина, который используется … Как поменять / инвертировать сопоставление словаря Подробнее »

Автор оригинала: Amber Mercado.

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

Эта коллекция пар клавишных значений отображает ключ к соответствующему значению, которое может быть реализовано во многих отношениях, познавая цену яблок и горох, чтобы ввести в приложение для продуктового магазина, которое используется на вашем телефоне, полностью, чтобы узнать, что Главная лига бейсбола принадлежит в каком штате! Это универсальный способ найти необходимую информацию, это мультипликация, динамическая и может быть вложена! Доступ к значениям в словаре означает, что вам необходимо иметь ключ для напечатанного правильного значения.

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

Так сложно, как это звучит, это на самом деле довольно просто, и мы собираемся пройти через 3 разных решения Насколько это можно сделать, я ваш код с объяснением на каждом шаге. Я напишу 3 отдельных куска кода, которые покажут вам, как это можно сделать с различными деталями, которые можно использовать для инвертирования отображения словарей.

В этом первом примере я собираюсь использовать повседневный словарь для цен на фрукты на местном супер-рынке. Я собираюсь использовать для петли Переключаться через мой словарь и переключить значения с соответствующими ключами. Первые вещи сначала, знайте, какие данные вы собираетесь использовать. В этом случае мы получаем Цены Фрукты разместить в нашем ассоциативном массиве. Я собираюсь использовать фрукты как мои ключи и цены как ценности.

for_sale = {'Apple': 0.69, 'Coconut': 1.69, 'Tangerine': 0.75, 'Banana': 1.25}

Ну, это здорово! У нас есть наши ключи и их цены, хранящиеся в нашем словаре for_sale Отказ Теперь пришло время сделать новый Пустой Словарь разместить новые ключи и значения в!

new_sale = {}

Теперь пришло время итерацию через словарь и обратить вспять ключи и ценности! Мы собираемся использовать для цикла!

for key, value in for_sale.items():
    new_sale[value] = key

Давайте запустим новый словарь!

print(new_sale)

Вот новый результат!

{0.69: 'Apple', 1.69, 'Coconut', 0.75:'Tangerine', 1.25:'Banana'}

Теперь давайте поставить весь код вместе!

for_sale ={'Apple': 0.69, 'Coconut': 1.69,'Tangerine': 0.75, 'Banana': 1.25}
new_sale = {}

for key, value in for_sale.items():
    new_sale[value] = key

print(new_sale)
# {0.69: 'Apple', 1.69: 'Coconut', 0.75: 'Tangerine', 1.25: 'Banana'}

Там! Это все это заняло! Это простые 8 строк, способ сделать это. Выражение new_sale [значение] Весь тяжелая работа для вас! Обратите внимание, что это не Сортируйте свой словарь ! Это только меняет ключ и ценности вокруг! Начиная с верхней части нашего кода, мы видим, что наш словарь имеет фрукты в ключах и цены в ценностях. Мы создал пустой список разместить новый словарь. После того, как мы проходили через словарь, переключение ключа и пары значений вокруг каждого экземпляра пары. Мы, затем попросили словарь работать с его новым именем. Новый словарь сейчас имеет Цены Как ключи и Фрукты Как ценности! Однако есть одна небольшая проблема с этими 8 небольшими линиями кода. Так же прекрасно, как это работает, это грязно и отмечает вас как новичка.

В Python мы хотим, чтобы код Beautive Pythonic легко понять и не занимает слишком много строк в нашем коде, особенно с тех пор, как нам просто нужно измениться вокруг пары клавишных значений! Итак, лучшее, что нужно использовать – это Словарь понимание подход. Знание того, как работать словарь всесторонне не только свидетельствует о ваших навыках, но также упростит, когда вы хотите вставить пару строки кода, чтобы сделать коррекцию, не требуя перезаписи частей вашего кода. Что такое понимание словаря, вы можете удивляться? Ну, это очень полезная особенность, если вы хотите построить словарь в одной строке кода! Это уменьшает ваш словарь на одну строку, сохраняя пространство и память в вашем коде. Используя {ключ: значение} сопоставление непосредственно из объекта ITERable, как список, мы можем построить наш словарь, даже использовать Условный заявления!

В этом следующем примере мы собираемся использовать одноклассник, чтобы сделать то, что мы сделали выше. На этот раз мы собираемся использовать зоомагазин и узнать цены на несколько маленьких питомцев купить! Мы собираемся использовать домашние животные как наши ключи и цены снова для ценностей.

small_pets = {'Goldfish':0.50, 'Gerbil':1.0, 'Parakeet':2}

В следующей строке я буду использовать всеобъемлющий подход словаря, чтобы изменить значения для клавиш:

inverted_pets = {values: key for key, value in dict.items(small_pets)}

Тогда я распечатаю новый словарь:

print(inverted_pets)

И мой результат:

inverted_pets = {0.5:'Goldfish', 1.0:'Gerbil', 2:'Parakeet'}

Теперь давайте пройдем через этот шаг за шагом. Я создал словарь под названием Small_pets Отказ Далее я создал новый словарь, Inverted_Pets И в то же время попросил его пройти через каждый элемент в словаре, и переключить значения для клавиш в словаре Small_pets Отказ На следующей строке я попросил его распечатать новый словарь. Теперь, чтобы поставить все это вместе!

small_pets = {'Goldfish':0.50, 'Gerbil':1.0, 'Parakeet':2}
inverted_pets = {values: key for key, value in dict.items(small_pets)}

print(inverted_pets)
# Outcome: {0.5:'Goldfish', 1.0:'Gerbil', 2:'Parakeet'}

При использовании этого метода не забудьте пройти в аргументе в новом словаре. Без этого ваша программа сломается, и вы получите ошибку, рассказывая вам, что Dict.items () берет позиционную аргумент, и их нет. Теперь этот бит кода гораздо чище, чем первый, который мы написали! Это потребовалось 5 меньше линий, чем предыдущий код, и он все еще выполняет работу! Это отличительная черта Pythonier, который знает, что он/она делает в реальном мире! Как вы можете увидеть здесь снова, этот метод не сортирует словарь, просто меняет порядок парных пар. Тем не менее, третий путь, чтобы достичь своей цели перевозить ценность для его ключа в словаре 3 строки!

small_pets = {'Goldfish':0.69, 'Gerbil':1.5, 'Parakeet':2}
d = {v:[i for i in small_pets.keys() if small_pets[i] == v ] for k,v in small_pets.items()}
print(d)
# {0.69: ['Goldfish'], 1.5: ['Gerbil'], 2: ['Parakeet']}

Как вы можете видеть по методу над этим кодом, немного длиннее его предшественника, но он позволяет использовать Python в очень динамичном смысле, показывающий использование условных условий в конструкции словаря и увеличения путаницы как словарь Small_Pets используется несколько раз. Будьте осторожны, используя этот метод, если вы начинаете или просто комфортно в словарях. Если вы хотели, чтобы вы могли переименовать один и тот же словарь к тому же названию, что и вы инверсируете старый по его значениям и ключам. Эти 3 примера – это те, которые я смог постичь и написать код, исходя из него. Тем не менее, есть много способов найти ваши ответы в Python и выписывайте свой код, чтобы соответствовать вашим потребностям. Я бы сказал, убедитесь, что вам удобно работать в словари, прежде чем пытаться что-либо за пределами вашей зоны комфорта. Я также бы сказал, что лучше не скопировать вставить первый код, который вы столкнулись. Это может сломать вашу программу и упростить вернуться в свою оригинальную форму и снова получить его снова. Обязательно маркируйте вашу переменную правильно, и ваша программа должна работать назад клавиши и их значения!

Ресурсы

Я нашел свою информацию о Stackoverflow для написания моего кода со ссылкой, которую я использовал опубликованную ниже. Я также добавил ссылку на Real Python для итерации в словари и поворота ключах в значениях и ссылку на одну из моих любимых ресурсов: Askpython. В качестве разработчика Python Junior, я считаю, что он имеет решающее значение, чтобы иметь максимально возможное количество отличных ресурсов, как это возможно, как Finxter, чтобы помочь мне продолжать учиться и расти! Я надеюсь, что вы также увидите ценность в этих ресурсах и больше, и я призываю вас искать их, присоединиться и Unskill самостоятельно! Я знаю, что, безусловно, не мог найти информацию, которую мне нужно написать код, если у меня не было ресурсов, которые я делаю!