从数组dict值设置python变量?

从数组dict值设置python变量?,python,json,Python,Json,第一次学习python,我正在阅读JSON并正确解码。我可以用第一个for循环遍历名称,因此我认为我正确地得到了名称的值。当我尝试将该值设置为一个变量时,我得到以下错误 Traceback (most recent call last): File "./logger.py", line 70, in <module> winnerName = jsonData['players'][winner].get('name') TypeError: list indices

第一次学习python,我正在阅读JSON并正确解码。我可以用第一个for循环遍历名称,因此我认为我正确地得到了名称的值。当我尝试将该值设置为一个变量时,我得到以下错误

Traceback (most recent call last):
  File "./logger.py", line 70, in <module>
    winnerName = jsonData['players'][winner].get('name')
TypeError: list indices must be integers, not unicode
JSON文件:

{
   "players":[
      {"name":"Donatello","img":"\/img\/players\/1.jpg","rol":"\/img\/players\/r1.jpg"},
      {"name":"Leonardo","img":"\/img\/players\/2.jpg","rol":"\/img\/players\/r2.jpg"},
      {"name":"Michelangelo","img":"\/img\/players\/3.jpg","rol":"\/img\/players\/r3.jpg"},
      {"name":"Raphael","img":"img\/players\/4.jpg","rol":"img\/players\/r4.jpg"},
      {"name":"Shredder","img":"\/img\/players\/5.jpg","rol":"\/img\/players\/r5.jpg"},
      {"name":"Rocksteady","img":"\/img\/players\/6.jpg","rol":"\/img\/players\/r6.jpg"},
      {"name":"Bebop","img":"\/img\/players\/7.jpg","rol":"\/img\/players\/r7.jpg"},
      {"name":"Foot Soldier","img":"\/img\/players\/8.jpg","rol":"\/img\/players\/r8.jpg"}
      ],
   "games":[
      {"matches":[
         {"player1":"0","player2":"2","winner":"0"},
         {"player1":"1","player2":"3","winner":"3"},
         {"player1":"4","player2":"5","winner":"4"},
         {"player1":"6","player2":"7","winner":"6"},
         {"player1":"0","player2":"3","winner":"0"},
         {"player1":"4","player2":"6","winner":"4"},
         {"player1":"0","player2":"4","winner":"0"}
         ]
      },
      {"matches":[
         {"player1":"0","player2":"2","winner":"2"},
         {"player1":"1","player2":"3","winner":"3"},
         {"player1":"4","player2":"5","winner":"4"},
         {"player1":"6","player2":"7","winner":"7"},
         {"player1":"2","player2":"3","winner":"2"},
         {"player1":"4","player2":"7","winner":"4"},
         {"player1":"2","player2":"4","winner":"4"}
         ]
      }
   ]
}
使用

“1”
(字符串)转换为
1
(整数)

编辑以澄清:

当你这样做的时候

for key, value in sorted(match.iteritems(), reverse=True):
    #...
…您的键和值变量将是字符串。我假设您正在迭代JSON的这一部分:

{"matches":[
     {"player1":"0","player2":"2","winner":"0"},
     {"player1":"1","player2":"3","winner":"3"},
因此,当您分配

winner = value
…试着向上看

winnerName = jsonData['players'][winner].get('name')
…你得到一个

TypeError: list indices must be integers, not unicode
…因为你在说:

x = list["4"]
应该说:

x = list[4]

你能发布完整的追踪吗?还有完整的
JSON
文件?因为您发布的内容没有
'games'
部分,但是您的代码引用了
jsonData['games']
。如果不检查您是否实际访问了正确的数据,您的JSON不包含任何数字,只包含字符串。所以
winner
包含一个字符串。你必须先把它转换成一个数字,“脚族”?你是说“步兵”吗?很抱歉删掉了,我不知道要包括多少。我添加了完整的回溯和JSON。感谢Ignacio lol没有注意到我输入的是单数,而不是单数。对不起,我没有提供足够的问题信息。问题经过编辑以澄清问题所在。我正在尝试获取玩家数组中的name值,并将其设置为一个变量。哦,哇,是的,这现在有意义了。您确实回答了,但我认为问题在于存储名称,而不是将赢家/输家的“int”作为字符串。非常感谢。
x = list["4"]
x = list[4]