列表索引必须是整数,而不是字典

时间:2015-12-19 22:49:59

标签: python

我为游戏制作了一个脚本,我需要帮助从json中获取字典信息。

JSON

到目前为止,我已经处理了列表,但我没有遇到问题。

req['result']['trades'][key]['output'] 

这是我尝试抓取信息之后我得到错误列表索引必须是整数,而不是字典。

非常感谢任何帮助。

json print,我删除了一些帐户敏感数据。

{
    'fue_step': 30,
    'type': 'm',
    'rubies': xxx, 
    'might': xxx,
    'race': 'xxx',
    'result': {
        'trades': [
            {
                'id': 13,
                'requirement': ['VenomTrapPart', 1],
                'token_cost': 1,
                'output': ['VulcansBlessingRare', 1],
                'name': 'VenomVulcan',
                'enabled': True
            }, 
            {
                'id': 14,
                'requirement': ['EternalRune', 50],
                'token_cost': 1,
                'output': ['ColossalMite500TroopPrizeItem', 1],
                'name': 'EternalColossal',
                'enabled': True
            }, 
            {
                'id': 86,
                'requirement':['RenameProclamation', 25],
                'token_cost': 1,
                'output': ['TimeTrickstersBag', 1],
                'name': 'RenameTrick',
                'enabled': True
            },
            {
                'id': 95,
                'requirement': ['FireDragonBlaze', 1],
                'token_cost': 1,
                'output': ['FireTroop1000TroopPrizeItem', 10],
                'name': 'BlazeFireTroop',
                'enabled': True
            },
            {
                'id': 100,
                'requirement': ['StoneDragonQuake', 1],
                'token_cost': 1,
                'output': ['StoneTroop10kTroopPrizeItem', 1],
                'name': 'StoneDQStoneTroop',
                'enabled': True
            },
            {
                'id': 113,
                'requirement': ['VulcansBlessing15Elite', 3],
                'token_cost': 1,
                'output': ['VulcansBlessing16Elite', 1],
                'name': '15 --> 16 Elite',
                'enabled': True
            },
            {
                'id': 114,
                'requirement': ['LunaPowder', 25],
                'token_cost': 1,
                'output': ['IceTroop50kTroopPrizeItem', 1],
                'name': 'Luna Powder --> Soul Reapers',
                'enabled': True
            },
            {
                'id': 115,
                'requirement': ['GreaterCrystalDefense', 5],
                'token_cost': 1,
                'output': ['MasterCrystalDefense', 1],
                'name': 'Greater Defense --> Master Defense',
                'enabled': True
            },
            {
                'id': 116,
                'requirement': ['NanoCanisters', 3],
                'token_cost': 1,
                'output': ['TestroniusDeluxe', 1],
                'name': 'Nano Canisters for Deluxes',
                'enabled': True
            },
            {
                'id': 117,
                'requirement': ['VulcansBlessing16Common', 3],
                'token_cost': 1,
                'output': ['VulcansBlessing17Common', 1],
                'name': "Common +16's for Common +17",
                'enabled': True
            }
        ], 
        'trades_today': 0,
        'doubloons_left': 9567,
        'free_trades_left': 1,
        'success': True,
        'auto_confirm': True,
        'trade_reset_date':1450771200
    },
    'client_cachebreaker': '1449879464'

1 个答案:

答案 0 :(得分:1)

我修改了您的编辑内容,在JSON中包含缩进,以便更具可读性。编辑一经批准,您就可以看到它。

以下是如何访问对象深处的值的示例:

print req['result']['trades'][4]['name']

<强>输出:

StoneDQStoneTroop

如果您想按照值here is a post访问列表中的dicts,这可以解释几种方法。例如,这将允许您通过req['result']['trades']值而不是'id'列表中的索引在'trades'中查找词典。