首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >我如何循环字典和集合以获得我想要的值?

我如何循环字典和集合以获得我想要的值?
EN

Stack Overflow用户
提问于 2022-05-03 20:34:50
回答 2查看 24关注 0票数 0

我有下面的代码和一个嵌套字典,我想访问每个参与者的“协助”值并附加它。我该怎么做?

代码语言:javascript
复制
gameData = {
"metadata": {
    "dataVersion": "2",
    "matchId": "NA1_4263873346",
    "participants": [
        "Sw_wTB5fzxXvyXeCovgcGhKNw4hLKzgcEvWFKzMqZWtfiJ7HtbxYOK6Nb7nBU5SR-B3bNt4Ay9bvjQ",
        "-t2_OfuyZFaCdZJ1lvbbfRFgYS1FWZcGhIsqj-8m-SS9UZ9wFyYeWBiGkcMgNEl_geH5CF9tX4SAzQ",
        "A-n0X4QWr8Jr0PISogZK3VpnIqqVbm87jchMYpTrUrhiSfeoxVCl8ImnJxaE_lg9pIAdxNgaFpkT7g"
    ]
},
"info": {
    "gameVersion": "12.6.431.7988",
    "mapId": 11,
    "participants": [
        {
            "assists": 9,
            "deaths": 5,
            "kills": 1
        },
        {
            "assists": 1,
            "deaths": 3,
            "kills": 1
        },
        {
            "assists": 3,
            "deaths": 5,
            "kills": 6
        } 
    ]
}

我使用它循环它们,但它返回错误"TypeError:列表索引必须是整数或切片,而不是str“。

代码语言:javascript
复制
participants = []
for row in gameData['metadata']['participants']:
    participants_row = {}
    participants_row['assists'] = gameData['info']['participants']['assists']
    participants.append(participants_row)

有人能帮助我理解如何循环它以获得所需的值吗?

EN

回答 2

Stack Overflow用户

发布于 2022-05-03 20:42:29

在访问dict的部分时有几个错误。

我想你的意思是:

代码语言:javascript
复制
# gameData = {"metadata": { ...
participants = []
for row in gameData['info']['participants']:
    participants_row = {}
    participants_row['assists'] = row['assists']
    participants.append(participants_row)
print(participants)

您的原作:for row in gameData['metadata']['participants']:正在迭代错误的participants列表。你的意思是:for row in gameData['info']['participants']:

票数 0
EN

Stack Overflow用户

发布于 2022-05-03 20:42:31

代码语言:javascript
复制
    participants_row['assists'] = match_detail['info']['participants']['assists']

我假设这一行代码会导致错误。要调试这一点,请将其分解为更小的部分:

代码语言:javascript
复制
info = match_detail['info']
participants = info['participants']
assists = participants['assists']

如果这样做,您将看到第三行将导致错误。所以再加上

代码语言:javascript
复制
print(participants)

现在我们看到participants是一个列表,但是您使用它就像字典一样。

我想你想要每个assistsparticipant。要做到这一点,一种方法是对列表进行理解:

代码语言:javascript
复制
assists = [p['assists'] for p in participants]

附带说明:

python团队正在改进错误消息,以便消息指向导致这种错误的特定索引。我不知道它将在哪个版本中发布,但我很期待它,因为这种类型的嵌套索引非常常见。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72105176

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档