0

我有一个关于如何使用循环过滤字典的问题。

这是字典的一个例子:

d = {'beta': ['ABC', '1', '5', '10', '15'],
     'lambda': ['DEF', '3', '30', '22.2', '150'],
     'omega': ['RST','15', '54.4', '150', '75']
}

如果每个键中的第三个值 < 100,如何过滤字典以删除键?换句话说,在 if 函数之后,字典中应该只剩下 omega。
我试过了:

for k, v in d.iteritems(): 
    r = float((d[key][2]))
    if r < float(100):
        del d[k]

但它没有用。有什么想法吗?这里是 python 编程的新手。

新字典应该只保留 omega 键,因为 150 大于 100。

4

1 回答 1

0
def cast_values(v):
    try:
        return float(v)
    except ValueError:
        return v

new_d = {k:[ cast_values(i) for i in v ] for k,v in d.items() if float(v[3]) > 100}

结果:

new_d = {'omega': ['RST', 15, 54.4, 150, 75]}
于 2016-09-01T16:48:03.043 回答