【问题标题】:grouping values in a list and storing them as sub list将列表中的值分组并将它们存储为子列表
【发布时间】:2021-11-30 22:43:06
【问题描述】:

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

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

谁能解决我的问题?

【问题讨论】:

    标签: python list dictionary list-comprehension sublist


    【解决方案1】:

    如下所示。这个想法是循环这些值,回顾并计算增量。

    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]]})
    

    【讨论】:

    • 感谢您的解决方案。将在我的代码中使用这个 sn-p。
    • 我很高兴能帮上忙。请接受答案。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-30
    • 1970-01-01
    • 2013-03-31
    • 1970-01-01
    • 2020-11-20
    • 1970-01-01
    • 2021-06-28
    相关资源
    最近更新 更多