按值过滤字典列表,然后将其他键和值添加到过滤字典?

Filter list of dictionaries by value and then add other keys & values to filtered dictionary?

我有一个词典列表:

    option_list_dict = [{'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94' }, 
    {'strike_price': '1.5', 'bid_price': '0.15', 'delta': '0.88'},
    {'strike_price': '2', 'bid_price': '0.05', 'delta': 'None'}, 
    {'strike_price': '2.5', 'bid_price': '0.31', 'delta': '0.25'}]

我如何过滤掉例如 >0.9 的 'delta',然后查看过滤字典中其他值和键的输出?它不应搜索 'None' 相关值。

所以结果应该是这样的:

search_for_delta >0.9 = {'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94'}
option_list_dict = [{'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94' }, 
    {'strike_price': '1.5', 'bid_price': '0.15', 'delta': '0.88'},
    {'strike_price': '2', 'bid_price': '0.05', 'delta': 'None'}, 
    {'strike_price': '2.5', 'bid_price': '0.31', 'delta': '0.25'}]

result = []

for dict in option_list_dict:
    try:
        if float(dict['delta']) > 0.9:
            result.append(dict)
    except:
        pass

print(result)

这种方法 returns 满足条件的所有词典的列表,在这种情况下:

result = [{'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94'}]

您也可以在 "one" 行中执行此操作:

[i for i in option_list_dict if
    (all(f.isnumeric() for f in i['delta'].split('.'))
     and float(i['delta']) > .9)]
[{'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94'}]