Выполните итерацию по вложенному словарю и включите случаи, когда ключ имеет значение True, в оператор печати - PullRequest
0 голосов
/ 28 апреля 2020

Вот мой словарь со значениями, которые, в свою очередь, сами являются словарями.

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

Вот for l oop, который не работает.

actions = ['Back Away',
    'Cover our Heads'
    'Take a Photograph']

for i in rarebirds: 
    if (i,'Aggressive')==True:
        print(i+": "+(actions[1]))
    else: print(i+ " is not aggressive")

Он выводит

Golden-crested Toucan is not aggressive
Pearlescent Kingfisher is not aggressive
Four-metre Hummingbird is not aggressive
Giant Eagle is not aggressive
Ancient Vulture is not aggressive

Но, согласно моему словарю, тукан и орел агрессивны, поэтому я хочу, чтобы for l oop напечатал индекс [1] моего списка под названием «действия». Не уверен, почему l oop не может успешно определить логическое значение True.

Куда я иду не так. Любая помощь будет принята с благодарностью.

1 Ответ

0 голосов
/ 28 апреля 2020

решено с

for i in rarebirds: 
    if rarebirds[i]['Endangered']==True:
        print(i+": "+ (actions[1]))
    else: print(i+ " is not aggressive")
...