按值过滤字典列表,然后将其他键和值添加到过滤字典?
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'}]
我有一个词典列表:
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'}]