使用python转换json时列出索引错误

时间:2017-10-15 15:15:06

标签: python

我写过这个查询,主要是获取json的详细信息。但是我收到了错误

print("Latitude\longitude\Title\Place\Mag")

while i< (len(dict_data)):

    print(str(dict_data['features'][i]['geometry']['coordinates'][i]) +"\t"+
      str(dict_data['features'][i]['geometry']['coordinates'][i+1])+ "\t"+
     str(dict_data['features'][i]['properties']['title']) +"\t"+ str(dict_data['features'][i]['properties']['place'])
     +"\t"+ str(dict_data['features'][i]['properties']['mag']))

    i=i+1

错误即将发生

IndexError                                Traceback (most recent call last)

IndexError: list index out of range

3 个答案:

答案 0 :(得分:1)

由于您正在寻找经度和纬度,我猜测@ {Hadus建议的LONGITUDE=0 LATTITUDE=1 while i< (len(dict_data)): coords = dict_data['features'][i]['geometry']['coordinates'] properties = dict_data['features'][i]['properties'] print( str(coords[LONGITUDE]) +"\t"+ str(coords[LATITUDE])+ "\t"+ str(properties['title']) +"\t"+ str(properties['place']) +"\t"+ str(properties['mag'])) i=i+1 是错误的。此外,一些查找可以移出打印,使更清洁:

antMatcher

答案 1 :(得分:0)

循环语句

while i< (len(dict_data))

您将idict_data词典的长度进行比较。但是在print语句中,您使用i来索引dict_data['features']字段和(!)dict_data['features'][i]['geometry']['coordinates']字段。此外,您使用i+1索引。我需要更多的信息(至少json的例子)来确定出现了什么问题。

答案 2 :(得分:0)

坐标是一个列表(长度为2)而不是字典。

实施例: {'features':{0:{'geometry':{'coordinates':['latitude', 'longtitude']}}}}

    print(str(dict_data['features'][i]['geometry']['coordinates'][0]) +"\t"+
  str(dict_data['features'][i]['geometry']['coordinates'][1])+ "\t"+
 str(dict_data['features'][i]['properties']['title']) +"\t"+ str(dict_data['features'][i]['properties']['place'])
 +"\t"+ str(dict_data['features'][i]['properties']['mag']))
@Andrew Gillis的答案更好,我会推荐它,除非你想要丑陋的代码永远不会好。