我有来自API的JSON响应。 JSON响应,'结果'是一个列表,其中包含许多单独的结果,称为“路线'”。
对于每个结果,在结果JSON响应中,我希望添加更多信息,例如从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'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'}),
({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'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'}),
({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'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'})]
我希望添加各自的价值观。对于3个结果的上述示例,有3个原点坐标,例如:
origincoords = ['51.41833327,0.115963078', '51.34666046,-0.210947524', '51.39574919,-0.045778021']
更新 - 感谢Martineau,我已经能够正确插入值。但是,我现在很好奇如何插入到不同的位置。例如,要实现:
最终结果看起来像 -
({u'routes': [{u'bounds': {u'northeast': {u'lat': value,
u'lng': value},
u'southwest': {u'lat': value,
u'lng': value},
u'origincoords': '51.39574919,-0.045778021'},
u'copyrights': u'value',
u'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'})]
答案 0 :(得分:1)
这是一种简单的方法,无需任何拉链
for index in range(len(results)):
results[index][u'origincoords'] = origincoords[index]
答案 1 :(得分:1)
你说的你想要的东西没有意义:
({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'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK'}
u'origincoords': '51.39574919,-0.045778021'})]
但这样做:
({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'overview_polyline': {u'points': u’value’},
u'summary': u’value’,
u'warnings': [],
u'waypoint_order': []}],
u'status': u'OK', # NOT the end of the dict
u'origincoords': '51.39574919,-0.045778021'})]
使用izip
(或zip
)获取后者的简单方法是:
try:
from itertools import izip
except ImportError:
izip = zip # Python 3
origincoords = ['51.41833327,0.115963078',
'51.34666046,-0.210947524',
'51.39574919,-0.045778021']
for route, origincoord in izip(results, origincoords):
route['origincoord'] = origincoord
<强>更新强>
如果你想将这些对插入'bounds'
中[0]
字典中'routes'
字典中的每个字典的results
列表中的for route, origincoord in izip(results, origincoords):
route['routes'][0]['bounds']['origincoord'] = origincoord
字典中列表,可以通过使用以下内容完成:
[
请注意,列表和词典都使用x
]
x
表示法来访问其内容。 {{1}} 必须求值为列表的整数索引,或者是字典的可散列对象(例如字符串,整数,元组等)。
答案 2 :(得分:0)
zip函数返回元组列表,其中第i个元组包含每个参数序列的第i个元素。要在结果中添加坐标,您可能希望迭代此元组列表并将其分配给for循环:
for result, coord in zip(results, origincoords):
result[u'origincoords'] = coord