Есть ли способ выполнить итерацию по подсписку и вернуть определенное значение?

#nested-for-loop

Вопрос:

У меня есть следующий словарь, который содержит вложенные словари:

 rarebirds = {
    'Gold-crested Toucan': {
        'Height (m)': 1.1,
        'Weight (kg)': 35,
        'Color': 'Gold',
        'Endangered': True,
        'Aggressive': True},
    'Pearlescent Kingfisher': {
        'Height (m)': 0.25,
        'Weight (kg)' : 0.5,
        'Color': 'White',
        'Endangered': False,
        'Aggressive': False},
    'Four-metre Hummingbird': {
        'Height (m)': 0.6,
        'Weight (kg)': 0.5,
        'Color' : 'Blue',
        'Endangered' : True,
        'Aggressive' : False},
    'Giant Eagle': {
        'Height (m)' : 1.5,
        'Weight (kg)' : 52,
        'Color' : 'Black and White',
        'Endangered' : True,
        'Aggressive' : True},
    'Ancient Vulture': {
        'Height (m)' : 2.1,
        'Weight (kg)' : 70,
        'Color' : 'Brown',
        'Endangered' : False,
        'Aggressive': False}
}
 

Если птица в этом списке действительно агрессивна, я должен распечатать заявление со словами «Прикрой голову». Я не могу понять, как заставить Python перебирать каждый элемент списка и печатать что-то только в том случае, если птица агрессивна. Пожалуйста, посоветуйте.

Ответ №1:

Попробуйте это, которое повторяет значения словаря:

 rarebirds = {...}
for bird_dict in rarebirds.values():
    if bird_dict["aggressive"]:
        print("Cover your head!")
 

В качестве альтернативы вы можете выполнить итерацию по ключам словаря:

 rarebirds = {...}
for bird in rarebirds:
    if rarebirds[bird]["aggressive"]:
        print("Cover your head!")
 

Любой из способов работает; в основном это зависит от ваших предпочтений.

Комментарии:

1. Спасибо вам за ответ