@Sawayadi

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

Есть 2 словаря: первый словарь - имя продавца-модель телефона, второй словарь- модель телефона-его цена.
Нужно вывести имя продавца той модели телефона, цена которой меньше 350
Первый словарь:
sells={
  "Маша":"Samsung 20",
  "Максим":"Iphone 6S",
  "Наташа":"Lenovo Legion"
}

Второй словарь:
prices={
  "Samsung 20": 300,
  "Iphone 6S": 260,
  "Lenovo Legion": 450
}

Я пробывал решить это через функцию, но выводит ошибку.
Сама функция:
def my_function():
low_price = [price for price, sell in sells.items() for price_in_price, cost in price.items() if cost < 350]
print(low_price)

Выводит вот такую ошибку:
---------------------------------------------------------------------------
NameError Traceback (most recent call last)
in
----> 1 my_function()

in my_function()
1 def my_function():
----> 2 low_price = [price for price, sell in sells.items() for price_in_price, cost in price.items() if cost < 350]
3 print(low_price)

NameError: name 'sells' is not defined
  • Вопрос задан
  • 103 просмотра
Решения вопроса 1
ВЫ как-то перемудрили все, можно же просто
sells={
...   "Маша":"Samsung 20",
...   "Максим":"Iphone 6S",
...   "Наташа":"Lenovo Legion"
... }
prices={
...   "Samsung 20": 300,
...   "Iphone 6S": 260,
...   "Lenovo Legion": 450
... }
result = [name for name, tel in sells.items() if prices.get(tel, 999) < 350]
>>> print(result)
['Маша', 'Максим']
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@zexer
prices={
  "Samsung 20": 300,
  "Iphone 6S": 260,
  "Lenovo Legion": 450
}
sells={
  "Маша":"Samsung 20",
  "Максим":"Iphone 6S",
  "Наташа":"Lenovo Legion"
}

phones = [key for key, value in prices.items() if value < 350]
seller_names = [key for key, value in sells.items() if value in phones]
# Out: ['Маша', 'Максим']
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы