зацикливание списка через словарь в python 3.x - PullRequest
0 голосов
/ 14 ноября 2018

Я понимаю, что есть другие подобные вопросы, но я не совсем понимаю.

Допустим, есть словарь:

fav_food = {'jen':'pizza','eric':'burrito','jason':'spaghetti','tom':'mac'}  

и вот список:

users = ['jason', 'phil', 'jen', 'ben']  

Сценарий здесь таков:

if a user in the list 'users' is in the dict. 'fav_food.keys()',  
then print(the user + " likes" + fav_food[the user])  
if a user in the list 'users' is not in the dict. 'fav_food.keys()',  
then print(the user + " hasn't taken the poll")

возврат должен быть:

Jason likes Spaghetti  
Phil hasn't taken the poll  
Jen likes Pizza  
Ben hasn't taken the poll  

Я хотел использовать цикл 'for' и каким-то образом перебирать список по словарю ... но я получаю ошибку, независимо от того, что я делаю.
Я бы предпочел сделать это наиболее "Python", если это возможно.

Буду признателен за помощь!

Ответы [ 3 ]

0 голосов
/ 14 ноября 2018

Вы можете попробовать это

for user in users:
    if user in fav_food.keys():
        print(user.capitalize(),"likes",fav_food[user].capitalize())
    else:
        print(user.capitalize(),"hasn't taken the poll")

Это будет выводить как-

Jason likes Spaghetti
Phil hasn't taken the poll
Jen likes Pizza
Ben hasn't taken the poll
0 голосов
/ 14 ноября 2018
fav_food = {'jen':'pizza','eric':'burrito','jason':'spaghetti','tom':'mac'}  
users = ['jason', 'phil', 'jen', 'ben'] 

for user in users:
    print(f"{user} likes {fav_food[user]}" if fav_food.get(user, None) else f"{user} hasn't taken the poll yet")

Работает как шарм, но стоит иметь в виду, что если бы пользователь выбрал пустую строку в качестве своей любимой еды, он вместо этого сказал бы, что он не принял участие в опросе

0 голосов
/ 14 ноября 2018

Вы имеете в виду, как

for user in users:
    try:
        print('{} likes {}'.format(user, fav_food[user]))
    except KeyError:
        print("{} hasn't taken the poll".format(user))

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...