“列表索引必须为整数”-Python

问题描述 投票:-2回答:2

我的输入如下:

"custom_fields": "[{"id":360027795053,"value":"XXXX"}, 
                   {"id":360030272393,"value":"XXX"}, 
                   {"id":360027795613,"value":XXX}, 
                   {"id":360027795393,"value":"XXX"}, 
                   {"id":360027795413,"value":"XXX"}, 
                   {"id":360030272233,"value":"XXX"},
                   {"id":360027795453,"value":["XXX"]}]"

我按如下方式访问上面的内容:

dict_conversion=json.loads(custom_fields)

properties['field_1']=dict_conversion['360027795053']['value']

上面给出了以下错误:

列表索引必须为整数

看起来我正在尝试按元素名称调用元素,但不允许调用。我只能按以下索引号进行呼叫:

 properties['field_1']=dict_conversion[1]['value']

但是我更喜欢用键名来呼叫。

任何帮助,不胜感激。

python python-2.x
2个回答
0
投票

dict_conversion是字典列表,而不是字典。首先,您应该将其转换为dict,然后使用字符串进行访问。

dict_conversion = {k:v for dct in dict_conversion for k,v in dct}

0
投票

您可以通过首先将id转换为键,将值作为其值的dict来执行此操作

custom_fields = [{"id":360027795053,"value":"XXXX"},
                   {"id":360030272393,"value":"XXX"},
                   {"id":360027795613,"value":"XXX"},
                   {"id":360027795393,"value":"XXX"},
                   {"id":360027795413,"value":"XXX"},
                   {"id":360030272233,"value":"XXX"},
                   {"id":360027795453,"value":"XXX"}]
id_dict = {i['id']: i['value'] for i in custom_fields}
print(id_dict)
>>> {360027795053: 'XXXX', 360030272393: 'XXX', 360027795613: 'XXX', 360027795393: 'XXX', 360027795413: 'XXX', 360030272233: 'XXX', 360027795453: 'XXX'}

0
投票

好吧,首先:'360027795053'是一个字符串,您必须删除引号以获取整数。

第二,dict_conversion是一个列表,其中dict_conversion[0]['id'] == 360027795053为真。没有'360027795053'甚至没有360027795053键。

如果要访问id为360027795053的值,最简单的方法当然是将json格式设置如下:

"[{360027795053:"XXXX"}, 
  {360030272393:"XXX"}, 
  {360027795613:"XXX"}, 
  {360027795393:"XXX"}, 
  {360027795413:"XXX"}, 
  {360030272233:"XXX"},
  {360027795453:["XXX"]}]"
© www.soinside.com 2019 - 2024. All rights reserved.