假设我有一个字典dict = {},其布局如下,其中X是力,Y是周期。我想过滤掉当前循环的力,该力低于上一个循环的最大力。
Key1 X Y
100 3
200 3
300 3
400 3
500 3
600 3
100 5
200 5
300 5
400 5
500 5
600 5
700 5
100 8
200 8
300 8
400 8
500 8
600 8
700 8
800 8
现在我的目标是通过比较X和Y来过滤列,例如:
dict_filter = {}
for k, v in dict.items():
if (Y - Y.min() == 0) is True:
dict_filter[k] = v
elif X(Y) < X(Y.shift(-1)).max()
dict_filter[k] = v
我知道它不是那样工作的,但这是我对此的一般想法。目标是要像
Key1 X Y
100 3
200 3
300 3
400 3
500 3
600 3
700 5
800 8
但是对于字典中的所有键,值对。我尝试了许多不同的条件,但是无论我做什么,dict_filter都保持为空并且什么也没有发生。我首先尝试仅通过最小Y值对其进行过滤。
dict_filter= {k: v for k, v in res.items() if (v['Y'] - v['Y'].min() == 0 is True)}
也许我也应该在循环中添加Y?喜欢:
for k,v,Y in dict.items()
是否也要遍历Y值?
答案 0 :(得分:0)
您的意思是只想让每个X获得最小的Y吗?试试这个:
想象您的输入文件就像
100 3
200 3
300 3
400 3
...
字典将是:
d = {}
for line in s.split('\n'):
parts = line.trim().split()
x = int(parts[0])
y = int(parts[1])
d.setdefault(x, []).append(y)
result = dict((k, min(v)) for k, v in d.iteritems())