将列表中的值分组并将它们存储为子列表
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]]})
我正在处理与坐标系相关的问题。
这是示例数据。我字典中的键表示 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]]})