Long list creating sorted() TypeError: 'NoneType' object is not subscriptable
Long list creating sorted() TypeError: 'NoneType' object is not subscriptable
option_list
是一个包含字符串的字典列表。
只要 option_list
列表不太大,此代码就可以工作。
option_list = sorted(option_list, key = lambda option: option['expiration_date'])
option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
它按到期日和行使价对期权数据进行排序。
但是,当 option_list
列表达到任意长度时,它会抛出此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-237-7fd70ddaa35a> in <module>()
3 # option_list = sorted(option_list, key = lambda option: (option['expiration_date'], option['strike_price']))
4
----> 5 option_list = sorted(option_list, key = lambda option: option['expiration_date'])
6 option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
7
<ipython-input-237-7fd70ddaa35a> in <lambda>(i)
3 # option_list = sorted(option_list, key = lambda option: (option['expiration_date'], option['strike_price']))
4
----> 5 option_list = sorted(option_list, key = lambda option: option['expiration_date'])
6 option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
7
TypeError: 'NoneType' object is not subscriptable
但是,将 option_list
列表截断为任意数字再次起作用:
option_list = sorted(option_list[:-5000], key = lambda option: option['expiration_date'])
我试过了-1000
,但还不够低。
为什么会发生这种情况,我该如何解决它而不必切断数据?
您的问题似乎是缺少数据。由于错误是引用 NoneTypes。
先尝试过滤掉丢失的数据:
no_missing_options = [o for o in option_list if o]
option_list = sorted(no_missing_options , key=lambda x: x['expiration_date'])
我认为您需要更改变量名称。我相信它不应该与您正在排序的内容相匹配。我也认为 Mustafa Aydin 是正确的。但是,也许只需在变量的末尾添加一个 's' 使其成为 option_lists 就可以了。
option_list
是一个包含字符串的字典列表。
只要 option_list
列表不太大,此代码就可以工作。
option_list = sorted(option_list, key = lambda option: option['expiration_date'])
option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
它按到期日和行使价对期权数据进行排序。
但是,当 option_list
列表达到任意长度时,它会抛出此错误:
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-237-7fd70ddaa35a> in <module>()
3 # option_list = sorted(option_list, key = lambda option: (option['expiration_date'], option['strike_price']))
4
----> 5 option_list = sorted(option_list, key = lambda option: option['expiration_date'])
6 option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
7
<ipython-input-237-7fd70ddaa35a> in <lambda>(i)
3 # option_list = sorted(option_list, key = lambda option: (option['expiration_date'], option['strike_price']))
4
----> 5 option_list = sorted(option_list, key = lambda option: option['expiration_date'])
6 option_list = sorted(option_list, key = lambda option: option['strike_price'], reverse=True)
7
TypeError: 'NoneType' object is not subscriptable
但是,将 option_list
列表截断为任意数字再次起作用:
option_list = sorted(option_list[:-5000], key = lambda option: option['expiration_date'])
我试过了-1000
,但还不够低。
为什么会发生这种情况,我该如何解决它而不必切断数据?
您的问题似乎是缺少数据。由于错误是引用 NoneTypes。 先尝试过滤掉丢失的数据:
no_missing_options = [o for o in option_list if o]
option_list = sorted(no_missing_options , key=lambda x: x['expiration_date'])
我认为您需要更改变量名称。我相信它不应该与您正在排序的内容相匹配。我也认为 Mustafa Aydin 是正确的。但是,也许只需在变量的末尾添加一个 's' 使其成为 option_lists 就可以了。