鱼C论坛

 找回密码
 立即注册
查看: 426|回复: 3

[已解决]最近在学习一个量化平台的编程,碰到了问题

[复制链接]
发表于 2020-4-9 13:56:53 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 qdwxzzy 于 2020-4-9 16:45 编辑

有一句代码实在不能理解,先说明一些情况

1.not_suspended_info   一开始我以为是一个pandas的dateframe类型,但是后来发现不对,存的列数据是一个字典,用到的两列的数据说明:
key                        类型            说明
symbol                str            标的代码
is_suspended        int            是否停牌. 1: 是, 0: 否


找到了一个样本
,not_suspended_info 里面存的是一个list[dict]
not_suspended_info = [{'symbol': 'SHSE.600037', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 14.5600004196167, 'upper_limit': 16.02, 'lower_limit': 13.1, 'adj_factor': 5.09191478865, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0}, {'symbol': 'SHSE.600060', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 15.170000076293945, 'upper_limit': 16.69, 'lower_limit': 13.65, 'adj_factor': 5.4699656415808, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0}, {'symbol': 'SHSE.600066', 'sec_level': 1, 'multiplier': 1.0, 'margin_ratio': 1.0, 'pre_close': 21.969999313354492, 'upper_limit': 24.17, 'lower_limit': 19.77, 'adj_factor': 38.630978556603, 'info': {'symbol': '', 'sec_type': 0, 'exchange': '', 'sec_id': '', 'sec_name': '', 'sec_abbr': '', 'sec_asset': '', 'price_tick': 0.0, 'trade_n': 0, 'listed_date': None, 'delisted_date': None}, 'is_suspended': 0, 'settle_price': 0.0, 'position': 0, 'pre_settle': 0.0,}]


2.看不懂的这句代码如下
not_suspended_symbols = [item['symbol'] for item in not_suspended_info if not item['is_suspended']]


3.我自己对这句代码的理解(这句代码的本意是取不停牌的标的代码)
把not_suspended_info数据里面列索引is_suspended值不为0的数据取出来,然后返回symbol列给not_suspended_symbols

4.我的疑问
[item['symbol'] for item in not_suspended_info if not item['is_suspended']]   为什么可以取出来is_suspended为0的,symbol的值??????



这个代码的结构真的让人很抓瞎啊,请能看懂的人帮忙把这句代码分解解释下,谢谢
最佳答案
2020-4-9 17:21:51
[item['symbol'] for item in not_suspended_info if not item['is_suspended']]

就等于:
[item['symbol'] for item in not_suspended_info if item['is_suspended'] == 0]

这是列表推导式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2020-4-9 14:06:08 | 显示全部楼层
本帖最后由 qdwxzzy 于 2020-4-9 15:04 编辑

在掘金的论坛中找到了                                             not_suspended_info类型为list[dict],之后就是将所提取的“字典”转换为”list
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-9 17:21:51 | 显示全部楼层    本楼为最佳答案   
[item['symbol'] for item in not_suspended_info if not item['is_suspended']]

就等于:
[item['symbol'] for item in not_suspended_info if item['is_suspended'] == 0]

这是列表推导式。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-4-10 09:15:38 | 显示全部楼层

网上关于list[dict{}]的知识点不多,改改用现在没问题         我就其实就想学一下,这句代码背后的逻辑,以后碰到困难的情况就可以举一反三
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-11-29 18:43

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表