我正在研究一个与坐标系统有关的问题。
这是样本数据。我的字典中的键表示x坐标,字典中的值表示相对于x坐标的y坐标。
data = {0:[1,2,10,35,36,42], 1:[50,55,60,80,85,110]}
我想以这样一种方式预处理我的数据:如果两个连续的y坐标共享一个公差(在这种情况下小于或等于10),那么必须创建一个子列表,等等y坐标应该组合在一起
为了更好地理解,输出应该是这样的:
output_data = {0:[[1,2,10],[35,36,42]], 1:[[50,55,60],[80,85],[110]]}
谁能给我的问题提供一个解决方案?如下所示。其思想是循环遍历值,回头看并计算增量。
from collections import defaultdict
DELTA = 10
data = {0:[1,2,10,35,36,42], 1:[50,55,60,80,85,110]}
result = defaultdict(list)
for k,v in data.items():
temp = [v[0]]
for idx,x in enumerate(v):
if idx > 0:
delta_found = x - temp[-1] > DELTA
if delta_found :
result[k].append(temp)
temp = [x]
else:
temp.append(x)
result[k].append(temp)
print(result)
输出defaultdict(<class 'list'>, {0: [[1, 2, 10], [35, 36, 42]], 1: [[50, 55, 60], [80, 85], [110]]})