我使用网络API获取一些地理信息,这些信息以下列格式返回数据:
[
[lat, lon, another_value, more_values...],
[lat, lon, another_value, more_values...],
...
]
每个子列表中的前两个值(lat
和lon
值)可以一起被视为唯一标识符。我多次调用此API来更新我的数据,并且希望能够用新值替换已存在的任何lat
/ lon
对。
我最初的想法是按lat
和lon
值对列表列表进行排序,然后进行二分查找,但是有很多关于如何按单个子列表排序的示例我无法解决如何按多个列表元素排序的问题。当然,如果有人有更好的方法来识别前两个元素的子列表,那也将非常感激!
答案 0 :(得分:3)
您可以使用字典在从API获取数据时存储和查询数据。这样你就可以使用元组(lat,lon)作为密钥。
d = {}
for line in result:
d[line[0], line[1]] = line[2:]
只要数据格式固定,就可以一次性存储和查询。
答案 1 :(得分:1)
operator.itemgetter()
。
import operator as op
data = [[0.0, 24.6, 13],
[1.0, 53.3, 8],
[1.0, 51.1, 12],
[-1.7, 37.4, 26]] # arbitrary sample data
data = sorted(data, key=op.itemgetter(0, 1))
print data
# [[-1.7, 37.4, 26], [0.0, 24.6, 13], [1.0, 51.1, 12], [1.0, 53.3, 8]]