在这个混合的嵌套对象中苦苦挣扎

时间:2014-11-01 14:56:30

标签: python json list dictionary

我仍然试图掌握Python中的嵌套对象,并试图从这个数据结构中提取我想要的东西(使用.json()方法从网站XHR请求返回)。

 {u'statColumns': [u'apps', u'subOn', u'minsPlayed', u'assistCross', u'assistCorner', 
u'assistThroughball', u'assistFreekick', u'assistThrowin', u'assistOther', u'assist'], u'paging': 
{u'firstRecordIndex': 0, u'resultsPerPage': 0, u'lastRecordIndex': 0, u'totalPages': 0,
 u'currentPage': 1, u'totalResults': 0}, u'teamTableStats': [{u'seasonId': 0, u'ranking': 1,
 u'assistFreekick': 0.0, u'minsPlayed': 810, u'tournamentName': u'Premier League', u'rating': 
7.35092043142043, u'assistThroughball': 0.4444444444444444, u'tournamentRegionCode': None, u'apps': 
9, u'seasonName': None, u'teamName': u'Chelsea', u'tournamentRegionId': 252, u'regionCode': u'gb-
eng', u'teamId': 15, u'assistThrowin': 0.0, u'assistCorner': 0.3333333333333333, u'tournamentId': 2,
 u'assistOther': 1.0, u'assistCross': 0.5555555555555556, u'assist': 0.0, u'name': u'Chelsea'},

    ...
    ...
    ...
     {u'seasonId': 0, u'ranking': 19, u'assistFreekick': 0.0, u'minsPlayed': 810, u'tournamentName':
 u'Premier League', u'rating': 6.716523569023569, u'assistThroughball': 0.1111111111111111, 
u'tournamentRegionCode': None, u'apps': 9, u'seasonName': None, u'teamName': u'Burnley', 
u'tournamentRegionId': 252, u'regionCode': u'gb-eng', u'teamId': 184, u'assistThrowin': 0.0, 
u'assistCorner': 0.0, u'tournamentId': 2, u'assistOther': 0.2222222222222222, u'assistCross': 0.0, 
u'assist': 0.0, u'name': u'Burnley'}, {u'seasonId': 0, u'ranking': 20, u'assistFreekick': 0.0, 
u'minsPlayed': 810, u'tournamentName': u'Premier League', u'rating': 6.681928256928256, 
u'assistThroughball': 0.0, u'tournamentRegionCode': None, u'apps': 9, u'seasonName': None, 
u'teamName': u'Aston Villa', u'tournamentRegionId': 252, u'regionCode': u'gb-eng', u'teamId': 24, 
u'assistThrowin': 0.0, u'assistCorner': 0.0, u'tournamentId': 2, u'assistOther': 0.2222222222222222,
 u'assistCross': 0.0, u'assist': 0.0, u'name': u'Aston Villa'}]}

这是填充包含足球数据的网站上的表的XML HTTP请求。可以使用网站上的下拉菜单重新编辑/刷新/重新填充数据。该表包含英超联赛中20支球队的数据。

我想要的是在较大的嵌套结构中称为u'teamTableStats':的字典列表的内容。其中的每个字典对应一个团队的数据。

我尝试过使用代码(其中responseser是使用.json()返回的对象:

for match in responser:

    print "match = ", match

这会返回如下结果:

match =  statColumns
match =  paging
match =  teamTableStats

当我真正想要的是这样的时候:

{u'seasonId': 0, u'ranking': 1,
     u'assistFreekick': 0.0, u'minsPlayed': 810, u'tournamentName': u'Premier League', u'rating': 
    7.35092043142043, u'assistThroughball': 0.4444444444444444, u'tournamentRegionCode': None, u'apps': 
    9, u'seasonName': None, u'teamName': u'Chelsea', u'tournamentRegionId': 252, u'regionCode': u'gb-
    eng', u'teamId': 15, u'assistThrowin': 0.0, u'assistCorner': 0.3333333333333333, u'tournamentId': 2,
     u'assistOther': 1.0, u'assistCross': 0.5555555555555556, u'assist': 0.0, u'name': u'Chelsea'}
...
...
...
{u'seasonId': 0, u'ranking': 20, u'assistFreekick': 0.0, 
    u'minsPlayed': 810, u'tournamentName': u'Premier League', u'rating': 6.681928256928256, 
    u'assistThroughball': 0.0, u'tournamentRegionCode': None, u'apps': 9, u'seasonName': None, 
    u'teamName': u'Aston Villa', u'tournamentRegionId': 252, u'regionCode': u'gb-eng', u'teamId': 24, 
    u'assistThrowin': 0.0, u'assistCorner': 0.0, u'tournamentId': 2, u'assistOther': 0.2222222222222222,
     u'assistCross': 0.0, u'assist': 0.0, u'name': u'Aston Villa'}

返回包含每个团队数据的字典。谁能告诉我我做错了什么以及我应该使用什么语法?

由于

1 个答案:

答案 0 :(得分:0)

jsonObject[u'teamTableStats']将为您提供与teamTableStats相对应的词典列表。

然后只需迭代它们并用它们做你想做的事情:

teamStatDicts = jsonObject[u'teamTableStats']
for statDict in teamStatDicts:
    print "match =", statDict