如何从 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(...))'
在中搜索选项后,输出 "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(...))'