Python数据类型和添加新值

时间:2015-01-28 13:52:32

标签: python json

我有一个来自API请求的示例结果。我的目标是在此“路线”结果中添加更多数据,并在结果中添加其他“路线”结果。这将包括有关发送到API以生成此请求的内容的信息。

results = 
[{u'routes': [{u'bounds': {u'northeast': {u'lat': value,
                                          u'lng': value},
                           u'southwest': {u'lat': value,
                                          u'lng': value}},
               u'copyrights': u'value',
               u'legs': [{u'distance': {u'text': u'value',
                                        u'value': value},
                          u'duration': {u'text': u'value',
                                        u'value': value},
                          u'duration_in_traffic': {u'text': u'value',
                                                   u'value': value},
                          u'end_address': u'value',
                          u'end_location': {u'lat': value,
                                            u'lng': value},
                          u'start_address': u'value',
                          u'start_location': {u'lat': value,
                                              u'lng': value},
                          u'steps': [{u'distance': {u'text': u'value',
                                                    u'value': value},
                                      u'duration': {u'text': u'value',
                                                    u'value': value},
                                      u'end_location': {u'lat': value,
                                                        u'lng': value},
                                      u'html_instructions': u'value',
                                      u'polyline': {u'points': u'value'},
                                      u'start_location': {u'lat': value,
                                                          u'lng': 0.value},
                                      u'travel_mode': u'value'},
                                     {u'distance': {u'text': u'value',
                                                    u'value': value},
                                      u'duration': {u'text': u'value',
                                                    u'value': value},
                                      u'end_location': {u'lat': value,
                                                        u'lng': value},
                                      u'html_instructions': u’value’,
                                      u'maneuver': u’value’,
                                      u'polyline': {u'points': u’value’},
                                      u'start_location': {u'lat': value,
                                                          u'lng': value},
                                      u'travel_mode': u’value’},
                          u'via_waypoint': []}],
               u'overview_polyline': {u'points': u’value’},
               u'summary': u’value’,
               u'warnings': [],
               u'waypoint_order': []}],
  u'status': u'OK'}]

我知道API会返回JSON,但我已经通过Requests模块对它进行了解码,以便在Python中使用。

当我跑步时

print(type(results))

我得到了

<type 'list'>

我现在想要添加新信息。例如,

'label': value

然后我尝试使用extend函数添加这些新值。

我试过了

results.extend(["label":2,"label_2":3])

但我收到以下错误

   results.extend(["label":2,"label_2":3])
                           ^
SyntaxError: invalid syntax

我怎样才能将值添加/添加/扩展到此响应?

我想要实现的目标

results = 
[{u'routes': [{u'bounds': {u'northeast': {u'lat': value,
                                          u'lng': value},
                           u'southwest': {u'lat': value,
                                          u'lng': value}},
               u'copyrights': u'value',
               u'legs': [{u'distance': {u'text': u'value',
                                        u'value': value},
                          u'duration': {u'text': u'value',
                                        u'value': value},
                          u'duration_in_traffic': {u'text': u'value',
                                                   u'value': value},
                          u'end_address': u'value',
                          u'end_location': {u'lat': value,
                                            u'lng': value},
                          u'start_address': u'value',
                          u'start_location': {u'lat': value,
                                              u'lng': value},
                          u'steps': [{u'distance': {u'text': u'value',
                                                    u'value': value},
                                      u'duration': {u'text': u'value',
                                                    u'value': value},
                                      u'end_location': {u'lat': value,
                                                        u'lng': value},
                                      u'html_instructions': u'value',
                                      u'polyline': {u'points': u'value'},
                                      u'start_location': {u'lat': value,
                                                          u'lng': 0.value},
                                      u'travel_mode': u'value'},
                                     {u'distance': {u'text': u'value',
                                                    u'value': value},
                                      u'duration': {u'text': u'value',
                                                    u'value': value},
                                      u'end_location': {u'lat': value,
                                                        u'lng': value},
                                      u'html_instructions': u’value’,
                                      u'maneuver': u’value’,
                                      u'polyline': {u'points': u’value’},
                                      u'start_location': {u'lat': value,
                                                          u'lng': value},
                                      u'travel_mode': u’value’},
                          u'via_waypoint': []}],
               u'overview_polyline': {u'points': u’value’},
               u'summary': u’value’,
               u'warnings': [],
               u'waypoint_order': []}],
  u'status': u'OK'}
  u'label': u'value'}]

更新 - 进一步的问题 - 我在'结果'中有多个'路线'。我批量发送这些请求,因此我想添加为该特定请求发送的相关信息,然后附加此信息。

@martineau非常友好地帮助了我并编了他的编辑。但是,我遇到的问题是将我要关联的列表中的第一个值与其各自的结果相关联。假设我有四个结果,我想将这4个'origincoords'附加到4个不同的JSON响应中。

哪里

origincoords = ['51.41833327,0.115963078', '51.34666046,-0.210947524', '51.39574919,-0.045778021', '51.4178257,0.010449216']    

第一组坐标应该与第一个JSON结果('routes')相关联,依此类推。

我尝试过使用zip函数,创建一个名为output

的新列表
output = (zip(results, origincoords))

当我打印输出时,我得到正确附加在结果末尾的值 -

u'summary': u'A20',
                u'warnings': [],
                u'waypoint_order': []}],
   u'status': u'OK'},
  '51.41833327,0.115963078'),

如何为此值添加标签?例如,我想看看

  u'summary': u'A20',
                    u'warnings': [],
                    u'waypoint_order': []}],
       u'status': u'OK'},
      u'origincoord' : '51.41833327,0.115963078'),

1 个答案:

答案 0 :(得分:1)

您可以向响应中添加信息,这是一个包含一个字典的列表,其中包含一个列表下的列表&#39; routes&#39;这是一个包含一个字典的列表 - 这是您要通过向其添加更多键/值对来修改的列表。这可以通过以下几种方式完成:

results[0]['routes'][0]['label'] = 2
results[0]['routes'][0]['label_2'] = 3

results[0]['routes'][0].update({'label': 2, 'label_2': 3})

results[0]['routes'][0].update([('label', 2), ('label_2', 3)])

无论如何,你最终得到的结果如下:

results = [{'routes': [{'bounds': {'northeast': {'lat': 'value',
                                                 'lng': 'value'},
                        'status': 'OK',
                        'label': 2,
                        'label_2': 3
                          . . .
                       }
                      ]
           }
          ]