Как сопоставить несколько значений одному значению в Python?

Как сопоставить несколько значений с одним значением и вернуть это единственное значение при поиске? Например:

Fruit -> Mango, Banana, Apple
Vehicle -> Car, Bus, Truck
Place -> Berlin, NewYork

Допустим, я введу «Грузовик», и он выполнит поиск и вернет обратно «Транспортное средство».

Как мне найти желаемую функцию отображения в Python 3? Пока что я вижу, что есть способ использовать словарь или кортеж. Но как этого добиться и как лучше всего реализовать это в Python?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
1
0
60
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Словарь должен работать нормально.

mapping = {
    "Fruit": ["Mango", "Banana", "Apple"],
    "Vehicle": ["Car", "Bus", "Truck"],
    etc.
}

thing = "Apple"

for category, examples in mapping.items():
    if thing in examples:
        return category

Или, как предложил @user2357112:

mapping = {
    "Mango": "Fruit",
    "Apple": "Fruit",
    "Truck": "Vehicle",
    "Bus": "Vehicle",
    etc.
}

thing = "Apple"

if thing in mapping:
    return mapping[thing]

На самом деле, я думаю, мне это нравится больше, потому что вам не нужен цикл.

Кажется, было бы разумнее сделать отображение наоборот. "Mango": "Fruit", "Banana": "Fruit"...

user2357112 18.02.2024 03:11
return не имеет смысла в данном контексте. С таким же успехом вы можете просто прервать выполнение и захватить данные после цикла на основе значений переменных, когда цикл остановился. Потому что это то, что вам придется сделать после возвращения.
OysterShucker 18.02.2024 08:00

@OysterShucker Я использовал return как сокращение для «вы нашли целевое значение, теперь обрабатывайте его, как хотите». Это может быть реальный возврат, распечатка, электронное письмо или что-то еще.

John Gordon 18.02.2024 16:48

@JohnGordon - Вообще-то я это знал. Однако, учитывая очень низкую точку входа в этот вопрос, некоторых это может сбить с толку. У меня есть многолетний опыт, у вас, вероятно, также есть многолетний опыт, ОП и другие, которым понадобится эта информация, могут не иметь даже 10-дневного опыта. Также я не согласен, что второй способ лучше. Это работает, только если вы раздуваете свой диктовку. С тремя вещами это может быть не так уж и важно. Что, если существует 3 миллиона вещей?

OysterShucker 18.02.2024 17:14

@OysterShucker Я не думаю, что разумно ожидать, что в ответе будут подробно описаны все возможные детали реализации. Задавший вопрос спросил, как найти отображение, и я ответил на это. Мы должны ожидать, что читатели смогут адаптировать ответы к своей конкретной ситуации.

John Gordon 18.02.2024 17:31

Используйте «фрукты», «транспортное средство» и «место» в качестве ключей, а список каждого предмета — в качестве значений в dict:

dct = {
       'Fruit' : ['Mango', 'Banana', 'Apple'],
       'Vehicle' :['Car', 'Bus', 'Truck'],
       'Place' : ['Berlin', 'NewYork']
       }

for k, v in dct.items():
    if "Truck" in v:
        print(k)
        break

#Output: Vehicle

Другие вопросы по теме