如何从 Python 中的字典中的值中过滤掉 None?

How to filter out None from values in Dictionary in Python?

在中搜索选项后,输出 "Strike Price"、"Ask Price"、"Bid Price" 和 "Implied Volatility"。 但是,我想过滤它,这样它只会给我 "implied volatility" 以上 1。由于 "implied volatility" 在字典中有一些 'None' 值,它给我一个错误:

"float() argument must be a string or a number, not 'NoneType'"

import config 
import robin_stocks as r 

r.login(config.USERNAME,config.PASSWORD)

#specify criteria to search for options 

symbol = 'GE'
expirationDate = '2020-06-19'
strike = 8

#search for option given strike price, expiration date and symbol
#filter through low ask prices
#place order 


search_option = r.find_options_for_stock_by_expiration(symbol,expirationDate,optionType='call')
for option in search_option:
    if float(option['implied_volatility']) > 1:
        print("Strike Price: {}, Ask: {}, Bid: {}, IV: {}".format(option['strike_price'],option['ask_price'],option['bid_price'],option['implied_volatility']))'

只需在 if 中添加此条件,因为 None 的计算结果为 False 您无需执行 if val is not None,只需 if val是正确的

if option['implied_volatility'] and float(option['implied_volatility']) > 1

过滤掉最大值implied_volatility

search_option = r.find_options_for_stock_by_expiration(...)
max_implied_volatility = max(float(option['implied_volatility'] or "-10000") for option in search_option) 

for option in search_option:

    if option['implied_volatility'] and \
       float(option['implied_volatility']) > 1 and \
       float(option['implied_volatility']) !=max_implied_volatility :

        print("Strike Price: {}, Ask: {}, Bid: {}, IV: {}".format(...))'