Python 3.4中的KeyError

时间:2014-05-10 20:08:13

标签: python dictionary keyerror

我在python中创建了一个字典,到目前为止我打印它时没有错:

print(video_game_company)

我会得到预期的结果:

{('Street Fighter IV', 'Resident Evil 4'): 'Capcom', ('Crash Bandicoot', 'Uncharted', 'The Last of Us'): 'Naughty Dog', ('Prince of Persia: The Forgotten Sands', "Assassin's Creed", 'Watch Dogs'): 'Ubisoft'}

索引如下:

  1. 育碧
  2. 卡普空
  3. 顽皮的狗
  4. 但是当我输入时:

    print("%s" % video_game_company["Capcom"])
    

    我收到以下错误:

    KeyError: 'Capcom'
    

    我做错了什么?

3 个答案:

答案 0 :(得分:1)

字典上的

__getitem__获取密钥,'Capcom'等是值 - 因此是错误。

您应该切换每个键和值以获得所需的行为:

{'Ubisoft': ('Prince of Persia: The Forgotten Sands', "Assassin's Creed", 'Watch Dogs'), 'Naughty Dog': ('Crash Bandicoot', 'Uncharted', 'The Last of Us'), 'Capcom': ('Street Fighter IV', 'Resident Evil 4')}

现在它正常工作:

print("%s" % video_game_company["Capcom"])
# ('Street Fighter IV', 'Resident Evil 4')

答案 1 :(得分:1)

"卡普空"这不是词典中的关键。它是键的价值(街头霸王IV'生化危机4')所以video_game_company [' Capcom&# 39;]导致一个keyError(显然......因为没有这样的密钥' Capcom')。

答案 2 :(得分:0)

' Capcom',' Ubisoft'和顽皮的狗'是你的字典中的值而不是键。

print("%s" % video_game_company[('Street Fighter IV', 'Resident Evil 4')])  
# display Capcom

您需要在dict中反转键和值才能执行video_game_company["Capcom"]

video_game_company = {'Ubisoft': ('Prince of Persia: The Forgotten Sands', "Assassin's Creed", 'Watch Dogs'),
                      'Naughty Dog': ('Crash Bandicoot', 'Uncharted', 'The Last of Us'), 
                      'Capcom': ('Street Fighter IV', 'Resident Evil 4')}

print("%s" % video_game_company["Capcom"])
# displays ('Street Fighter IV', 'Resident Evil 4')