在Python中解析JSON(反向字典搜索)

2024-09-30 14:19:28 发布

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

我使用Python和“requests”来练习API的使用。我已经成功地完成了基本的请求和解析,但是对于一个更复杂的项目,我很难理解列表。在

我向服务器请求并得到了一本词典。从那里,我用了:

participant_search = (match1_request['participantIdentities'])

要转换participanties键的值以获取以下数据:

^{pr2}$

我的目标是将callomerID和participantId合并到一个列表中。这通常很容易,但是参与者的顺序是随机的。所以我想知道的球员有时会是第一名,有时是第三名。在

所以我不能像平常那样使用var = list[0]。在

我有权访问callomerID,所以我想我可以搜索这个列表,然后收集它周围的所有信息。例如,如果我知道63523774,那么我就可以找到它的密钥。从这里,是否可以找到密钥的父列表?在

如有任何指导,我们将不胜感激。在

编辑(澄清):

以下是我正在处理的数据:http://pastebin.com/spHk8VP0

第1691行的participant是嵌套字典“participanties”所在的位置。从这里开始,有10本字典。这10个字典包括两个嵌套字典“player”和“participantId”。在

我的目标是在这10个字典中搜索一个具有callogerid的字典。在我向服务器发出这个请求之前,我已经知道了callomerID。在

所以我在寻找一种超越“真/假”的“搜索”方法。一种搜索方法,如果在一个对象中找到一个值,则整个字典(键:值)被给予。在


Tags: 数据项目方法服务器api目标列表字典
3条回答
ds = match1_request['participantIdentities']
result_ = [d for d in ds if d["player"]["summonerId"] == 12345]
result = result_[0] if result_ else {}

看看它对你是否有用。在

我不知道我是否理解你,但这行得通吗?在

for i in range(len(match1_request['participantIdentities'])):
    if(match1_request['participantIdentities'][i]['summonerid'] == '63523774':
       # do whatever you want with it.

i成为您要搜索的索引。在

您可以使用dict理解来构建一个dict,它使用summonerIds作为键:

players_list = response['participantIdentities']
{p['player']['summonerId']: p['participantId'] for p in players_list}

相关问题 更多 >