我是 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,51), (93,180)有没有一种简单的方法可以做到这一点?到目前为止,我已经能够确定从“高于”到“低于”70 或反之亦然发生变化的点,但不确定如何继续创建间隔和值(例如在字典中)。我想我已经盯着这个看太久了。 最佳答案 下面的代码应该给你你要求的输出:oninterval = Falsedd = {}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, vif oninterval: dd[(start_key, keys[-1])] = cur_list编辑:扩展代码部分以接受第一个或最后一个项目的 y 值关于python - 识别具有特定值的区间,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9610959/
10-12 16:41