2016-06-08 3 views
0

У меня есть словарь, как это:Печать словарных значений в Python

a={'*Initial*': {'H': 0.8, 'C': 0.2}, 'C': {'H': 0.4, 'C': 0.6}, 'H': {'H': 0.7, 'C': 0.3}} 

Когда я пытаюсь напечатать следующее:

print {k:v[0] for (k,v) in a.items()} 

Я получаю сообщение об ошибке:

File "...", line 3, in <module> 
    print {k:v[0] for (k,v) in a.items()} 
    File "...", line 3, in <dictcomp> 
    print {k:v[0] for (k,v) in a.items()} 
KeyError: 0 

Может кто-нибудь, пожалуйста, объясните, почему это происходит?

ответ

1

В вашем словаре значение «v» равно значению «k», но «v» также является другим словарем, поэтому вы не можете индексировать его, выполнив v [0], вместо этого вы должны дать ему действительный такой как

print {k:v['H'] for (k,v) in a.items()} 

, который распечатывает значения 0,8, 0,4 и 0,7.

+0

Спасибо, теперь это ясно! – nanachan

Смежные вопросы