Отфильтровать список словарей по значению, а затем добавить другие ключи и значения в отфильтрованный словарь? - PullRequest
0 голосов
/ 20 июня 2020

У меня есть список словарей:

    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 , а затем увидеть вывод других значений и ключи, которые находятся в этом отфильтрованном словаре? И он не должен искать значения, относящиеся к «Нет».

Таким образом, результат должен выглядеть примерно так:

search_for_delta >0.9 = {'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94'}

Ответы [ 2 ]

1 голос
/ 20 июня 2020
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)

Этот подход возвращает список всех словарей, удовлетворяющих условию, в данном случае:

result = [{'strike_price': '1', 'bid_price': '0.25', 'delta': '0.94'}]
0 голосов
/ 20 июня 2020

Вы также можете сделать это в «одной» строке:

[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'}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...