首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >忽略无值并跳到下一个值?

忽略无值并跳到下一个值?
EN

Stack Overflow用户
提问于 2020-06-22 15:05:23
回答 4查看 763关注 0票数 0

这个字典列表有规律的变化。

代码语言:javascript
复制
search_option = [{'strike_price': '1', 'bid_price': '0.25', 'implied_volatility': '0.94' }, 
{'strike_price': '3.5', 'bid_price': '0.20', 'implied_volatility': '0.88'},
{'strike_price': '2', 'bid_price': '0.05', 'implied_volatility': None}, 
{'strike_price': '3.5', 'bid_price': '0.31', 'implied_volatility': '0.25'}]

在这里,代码搜索一个隐含波动率低于0.9的选项。

代码语言:javascript
复制
for option_list in search_option:
    if option_list is not None:
        option_list = ([i for i in search_option if float(i["implied_volatility"]) < 0.90])
    print(option_list)

我偶尔会遇到这样的错误:

参数必须是字符串或数字,而不是'NoneType‘

我的问题是,我如何使搜索保持不变(implied_volatility < 0.9),同时忽略None值?换句话说,如果是'None‘,那么跳到下一个可用选项。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2020-06-22 15:07:36

试试这个:

代码语言:javascript
复制
option_list = ([i for i in search_option if i["implied_volatility"] and float(i["implied_volatility"]) < 0.90])

您也不必使用for循环遍历search_option,您只需使用上面的代码来替换它。

票数 1
EN

Stack Overflow用户

发布于 2020-06-22 15:12:58

代码语言:javascript
复制
for i in search_option:
if i['implied_volatility'] is not None and float(i['implied_volatility']) < 0.9 :
     print(i)

这是你想要的吗?

票数 1
EN

Stack Overflow用户

发布于 2020-06-22 15:13:16

在条件之前添加if i["implied_volatility"] is not None。这样,你的整个清单理解就变成了:

代码语言:javascript
复制
[i for i in search_option if i["implied_volatility"] is not None if float(i["implied_volatility"]) < 0.90]

这是等效于嵌套条件的列表理解。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62517499

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档