Json python中的三重嵌套for循环

时间:2014-08-09 19:41:21

标签: python for-loop nested json

我需要从以下python对象打印纬度和经度:

{
"Siri": {
"ServiceDelivery": {
  "ResponseTimestamp": "2014-08-09T15:32:13.078-04:00",
  "VehicleMonitoringDelivery": [
    {
      "VehicleActivity": [
        {
          "MonitoredVehicleJourney": {
            "LineRef": "MTA NYCT_B38",
            "DirectionRef": "1",
            "FramedVehicleJourneyRef": {
              "DataFrameRef": "2014-08-09",
              "DatedVehicleJourneyRef": "MTA NYCT_FP_C4-Saturday-090900_B38_110"
            },
            "JourneyPatternRef": "MTA_B380099",
            "PublishedLineName": "B38",
            "OperatorRef": "MTA NYCT",
            "OriginRef": "MTA_504241",
            "DestinationRef": "MTA_901070",
            "DestinationName": "DNTWN BKLYN TILLARY ST",
            "SituationRef": [
              {
                "SituationSimpleRef": "MTA NYCT_78100"
              }
            ],
            "Monitored": true,
            "VehicleLocation": {
              "Longitude": -73.937414,
              "Latitude": 40.692978
            },

到目前为止,我已经写过:

for delivery in theJSON['Siri']['ServiceDelivery']['VehicleMonitoringDelivery']:
 for activity in delivery['VehicleActivity']:
    for locations in activity['MonitoredVehicleJourney']['VehicleLocation']:
        print locations['VehicleLocation']['Longitude']

但我收到错误:typeError:string indices must be integars.

如何解决?

1 个答案:

答案 0 :(得分:1)

activity['MonitoredVehicleJourney']['VehicleLocation']是一个字典,而不是列表,因此迭代它是对字符串的迭代。如果locations是字符串,则locations['VehicleLocation']['Longitude']没有意义。你想要

for delivery in theJSON['Siri']['ServiceDelivery']['VehicleMonitoringDelivery']:
    for activity in delivery['VehicleActivity']:
         print activity['MonitoredVehicleJourney']['VehicleLocation']['Longitude']