我本可以创造一个更具体的标题,但我不知道如何表述我的问题。在
{
"playerStatSummaries": [
{
"playerStatSummaryType": "AramUnranked5x5",
"aggregatedStats": {
"totalChampionKills": 2250,
"totalAssists": 6199,
"totalTurretsKilled": 114
},
"modifyDate": 1463737953000,
"wins": 211
},
{
"playerStatSummaryType": "RankedSolo5x5",
"aggregatedStats": {
"totalNeutralMinionsKilled": 928,
"totalMinionKills": 15346,
"totalChampionKills": 522,
"totalAssists": 459,
"totalTurretsKilled": 129
},
"losses": 35,
"modifyDate": 1464273041000,
"wins": 44
},
{
"playerStatSummaryType": "URF",
"aggregatedStats": {
"totalNeutralMinionsKilled": 100,
"totalMinionKills": 1379,
"totalChampionKills": 138,
"totalAssists": 125,
"totalTurretsKilled": 25
},
"modifyDate": 1463946086000,
"wins": 10
}
],
"summonerId": 85058811
}
我想在这个字典上反复检查,直到找到“wins”:44键/值对。我需要动态访问它,因为json文件并不总是具有相同数量的条目,因此索引也不总是相同的。在
我知道如何简单地迭代键:
^{pr2}$但是我不知道如何再次迭代这些键,因为在“playerStateSumeries”块中还有另一组键/对值。在
我也不明白为什么这里的键/对值有多个值,例如“playerStatSummaryType:”RankedSolo5x5,“aggregatedStats”。我以为每个键只能有一个值。在
简而言之:如果我不知道当我收到这个文件时有多少个条目(我称之为块),如何动态地到达“RankedSolo5x5”块中的“wins”:44个键/值对。在
很抱歉,如果这个问题听起来很模糊,因为我很困惑如何解决这个问题,但请告诉我是否需要更多的信息。在
可以使用List Comprehension遍历统计信息
对列表理解使用
if
条件:在此语法中,
{}
表示字典,而[]
表示列表或数组。在首先是一个
{
,因此外部数据项是一个字典。主键似乎是"playerStatSummaries"
,所以让我们直接访问它:现在,playerStatSummaries是一个项目的列表/数组,所以我们要么迭代它,要么在其中使用一个索引号。您已经说过编号/顺序不同,所以我们将对列表进行迭代。在
^{pr2}$这将使用list comprehension创建一个新列表,该列表只包含与数据结构中列表相同的元素。但我们可以走得更远!在
每个}。因此,我们可以使用列表理解的
summ
项本身就是一个字典,其键类似于'wins': 44
或{if clause
功能筛选出您想要的项目:或者可能是更好的方法:
现在您将有一个包含44个wins的所有元素的列表,或者类型是
RankedSolo5x5
。在很可能只有一个元素。您可以保留列表,并按如下方式访问它:
或者你可以在理解的时候抓住第0个元素:
相关问题 更多 >
编程相关推荐