Функция по поиску значений в словаре
Не могу разобраться с тем, как выводить информацию из словаря. В данном случае нужно вводить название города, а затем написать, кто в нём живёт, но работает всё время с ошибками.
def is_anyone_in(collection, city):
if city in collection: # если есть среди значений словаря collection
for name in collection.values(): # переберите все ключи словаря
if name == city: # если соответствующее ключу значение равно city
print('В городе ' + city + ' живёт ' + name + '.')
else:
print('Пока никого.')
friends = {
'Серёга': 'Омск',
'Соня': 'Москва',
'Дима': 'Челябинск',
'Алина': 'Хабаровск',
'Егор': 'Пермь'
}
is_anyone_in(friends, 'Хабаровск')
Ответы (2 шт):
Автор решения: Danis
→ Ссылка
if city in collection: проверяет наличие city среди ключей, а не значений. В name находится город а не имя, вам надо итерировать сразу и по ключам и по значения
также лучше использовать f строки
def is_anyone_in(collection, city):
if city in collection.values(): # если есть среди значений словаря collection
for name, city1 in collection.items(): # переберите все ключи словаря
if city1 == city: # если соответствующее ключу значение равно city
print(f'В городе {city} живёт {name}.')
else:
print('Пока никого.')
Автор решения: Zhihar
→ Ссылка
у вам список наизнанку просто, с ним можно так:
friends = {
'Серёга': 'Омск',
'Соня': 'Москва',
'Дима': 'Челябинск',
'Алина': 'Хабаровск',
'Егор': 'Пермь'
}
city = 'Хабаровск'
res = [name for name in friends if friends[name] == city]
print("в Хабаровск:", "никто не живет." if res == [] else ', '.join(res))