我有一个简单的间隔列表:
[
{ "begin" : 10, "end" : 20 },
{ "begin" : 1, "end" : 2 },
{ "begin" : 5, "end" : 7 },
{ "begin" : 100, "end" : 200 }
]
如何按条件连接区间
if abs(current["end"] - next["begin"] < 40) ?
结果必须是:
[
{ "begin" : 1, "end" : 20 },
{ "begin" : 100, "end" : 200 }
]
我的解决方案:
from pyinter import interval, IntervalSet
def test():
g = sorted(g, key=itemgetter("begin"))
ln = len(g)
if ln < 2: return
i = 0
while i < ln - 1:
if abs(g[i]["end"] - g[i+1]["begin"]) < 40:
g[i]["end"] = g[i+1]["begin"]
i = i + 1
a = IntervalSet()
for i in range(len(g)):
a.add(interval.closed( g[i]["begin"], g[i]["end"] ))
res = []
for key in a:
res.append({ "begin" : key.lower_value, "end" : key.upper_value })
return res
但这是一个非常丑陋的世界
这个怎么样
相关问题 更多 >
编程相关推荐