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



我正在研究一个与坐标系统有关的问题。

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

相关内容

  • 没有找到相关文章