Python JSON解析重复记录

2024-04-24 01:30:22 发布

您现在位置:Python中文网/ 问答频道 /正文

在我的JSON文件中,我有一系列相同的命名记录

"ability_upgrades":{
    "ability":5155,
    "time":1226
},
"ability_upgrades":{
    "ability":5155,
    "time":1426
},
"ability_upgrades":{
    "ability":5155,
    "time":1497
},
"ability_upgrades":{
    "ability":5157,
    "time":1543
},

如果我使用json.loads,它将只保存最后一条记录。
如果我想要一个ability_upgrades的列表,我该怎么做?在


Tags: 文件json列表time记录命名loadsability
1条回答
网友
1楼 · 发布于 2024-04-24 01:30:22

The documentation表示json.loads中名为object_pairs_hook的参数可用于处理重复记录:

>>> json.loads(s, object_pairs_hook=(lambda x:  x))
[(u'ability_upgrades', [(u'ability', 5155), (u'time', 1226)]), (u'ability_upgrades', [(u'ability', 5155), (u'time', 1426)]), (u'ability_upgrades', [(u'ability', 5155), (u'time', 1497)]), (u'ability_upgrades', [(u'ability', 5157), (u'time', 1543)])]

如何定义该函数完全取决于您希望它是什么。在上面的例子中,由于钩子作为参数获取一个对列表,identity函数只返回列表。在

例如,如果您定义:

^{pr2}$

然后:

>>> json.loads(s, object_pairs_hook=collectAbilityUpgrades)
{u'ability_upgrades': [{u'ability': [5155], u'time': [1226]}, {u'ability': [5155], u'time': [1426]}, {u'ability': [5155], u'time': [1497]}, {u'ability': [5157], u'time': [1543]}]}

可能和你想要的差不多。在

相关问题 更多 >