在Python中,如何从字典中的值中过滤出None?

2024-05-12 01:11:37 发布

您现在位置:Python中文网/ 问答频道 /正文

在中搜索期权后,给出了“执行价”、“卖出价”、“买入价”和“隐含波动率”的输出。 然而,我想过滤它,这样它只会给我大于1的“隐含波动率”。由于“隐含波动率”在字典中有一些“无”值,这给了我一个错误:

float()参数必须是字符串或数字,而不是“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']))'

Tags: importconfigforsearchfloatsymbolpriceask
1条回答
网友
1楼 · 发布于 2024-05-12 01:11:37

只需在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(...))'

相关问题 更多 >