def filter(self, result, from_addr, to_addr, distance):
filtered_result = {}
for key in result:
filtered_list = result[key]
if from_addr:
filtered_list = [item for item in filtered_list if self.base_address + item[0] >= from_addr]
if to_addr:
filtered_list = [item for item in filtered_list if self.base_address + item[0] <= to_addr]
if distance:
if len(filtered_list) < 2:
filtered_list = []
else:
offsets_a = [item[0] for item in filtered_list]
offsets_b = offsets_a[1:] + [0]
api_distances = list(map(operator.sub, offsets_b, offsets_a))
distance_filtered = []
for index, api_distance in enumerate(api_distances[:-1]):
if api_distance <= distance:
if filtered_list[index] not in distance_filtered:
distance_filtered.append(filtered_list[index])
if filtered_list[index + 1] not in distance_filtered:
distance_filtered.append(filtered_list[index + 1])
filtered_list = distance_filtered
filtered_result[key] = filtered_list
return filtered_result
评论列表
文章目录