按多个元素在列表中查找项目

2024-05-04 23:09:08 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在使用web API获取一些地理信息,它以以下格式返回数据:

[
    [lat, lon, another_value, more_values...],
    [lat, lon, another_value, more_values...],
    ...
]

每个子列表中的前两个值(latlon值)可以一起视为唯一标识符。我正在对此API进行多次调用以更新数据,并希望能够用新值替换任何已存在的lat/lon对。你知道吗

我最初的想法是按latlon值对列表进行排序,然后进行二进制搜索,但虽然有很多示例说明如何按单个子列表元素排序,但我无法计算出如何按多个列表元素排序。当然,如果有人有更好的方法通过前两个元素来识别子列表,那也会非常感激!你知道吗


Tags: 数据apiweb元素列表排序valuemore
2条回答

@Yasser Elsayed的答案很好,但是如果您仍然希望按纬度然后按经度排序数据,那么您应该使用^{}。你知道吗

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]]

当您从API获得数据时,可以使用字典来存储和查询数据。这样,您就可以使用元组(lat,lon)作为键。你知道吗

d = {}
for line in result:
    d[line[0], line[1]] = line[2:]

只要数据格式是固定的,就可以一次性完成存储和查询。你知道吗

相关问题 更多 >