将列表中的值分组并将它们存储为子列表

grouping values in a list and storing them as sub list

我正在处理与坐标系相关的问题。

这是示例数据。我字典中的键表示 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]]})