Как сопоставить несколько значений с одним значением и вернуть это единственное значение при поиске? Например:
Fruit -> Mango, Banana, Apple
Vehicle -> Car, Bus, Truck
Place -> Berlin, NewYork
Допустим, я введу «Грузовик», и он выполнит поиск и вернет обратно «Транспортное средство».
Как мне найти желаемую функцию отображения в Python 3? Пока что я вижу, что есть способ использовать словарь или кортеж. Но как этого добиться и как лучше всего реализовать это в Python?






Словарь должен работать нормально.
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]
На самом деле, я думаю, мне это нравится больше, потому что вам не нужен цикл.
return не имеет смысла в данном контексте. С таким же успехом вы можете просто прервать выполнение и захватить данные после цикла на основе значений переменных, когда цикл остановился. Потому что это то, что вам придется сделать после возвращения.
@OysterShucker Я использовал return как сокращение для «вы нашли целевое значение, теперь обрабатывайте его, как хотите». Это может быть реальный возврат, распечатка, электронное письмо или что-то еще.
@JohnGordon - Вообще-то я это знал. Однако, учитывая очень низкую точку входа в этот вопрос, некоторых это может сбить с толку. У меня есть многолетний опыт, у вас, вероятно, также есть многолетний опыт, ОП и другие, которым понадобится эта информация, могут не иметь даже 10-дневного опыта. Также я не согласен, что второй способ лучше. Это работает, только если вы раздуваете свой диктовку. С тремя вещами это может быть не так уж и важно. Что, если существует 3 миллиона вещей?
@OysterShucker Я не думаю, что разумно ожидать, что в ответе будут подробно описаны все возможные детали реализации. Задавший вопрос спросил, как найти отображение, и я ответил на это. Мы должны ожидать, что читатели смогут адаптировать ответы к своей конкретной ситуации.
Используйте «фрукты», «транспортное средство» и «место» в качестве ключей, а список каждого предмета — в качестве значений в 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
Кажется, было бы разумнее сделать отображение наоборот.
"Mango": "Fruit", "Banana": "Fruit"...