python – 标识具有特定值的间隔

我是
Python的新手,我一直试图找出“间隔”,其中y值=

 d = {0: '92', 11: '70', 43: '77', 44: '76', 61: '77', 64: '69',
                    68: '67', 84: '68', 93: '87', 108: '81', 141: '74'}

我想编写一个函数,允许我根据y值=

 (a,b): {above, below, below, below, above}

例如,我对作为字典的区间感兴趣,这里N = 70:

{(0,43):{92,70,77}, (61,93): {77, 69, 67, 68, 87}} <-- includes the values at endpoints

但是,可以忽略那些值永远不会低于70的其他“间隔”
 所以在这种情况下我们不需要:(43,41),(93,180)

有一个简单的方法吗?到目前为止,我已经能够识别出从“上方”变为“下方”70或反之亦然的点,但不确定如何继续创建间隔和值(例如在字典中).我想我已经盯着这个太久了.

最佳答案 以下代码应该为您提供所要求的输出:

oninterval = False
dd = {}
keys = d.keys()
keys.sort()
start_key, first_val = keys[0], d[keys[0]]

for k in keys:
    v = float(d[k])
    if oninterval:
        cur_list.append(v)
        if not int(v) <= 70: # interval ends
            oninterval = False
            dd[(start_key,k)] = cur_list
    else:
        if int(v) <= 70:
            cur_list = [first_val, v]
            oninterval = True
        else:
            start_key, first_val = k, v

if oninterval: dd[(start_key, keys[-1])] = cur_list

编辑:

扩展代码分数以接受第一个或最后一个项目以使y值<= 70并将y值视为浮点数

点赞