|
|
|
|
移动端

2.1.2 字符串和容器(2)

《量化交易之路:用Python做股票量化分析》第2章量化语言——Python,第2部分(第2~6章)主要讲解了量化交易需要的基础知识及相关工具,如Python语言、NumPy、pandas、数据可视化及量化数学等知识,适合完全没有任何编程经验的读者从头开始阅读。本节为大家介绍字符串和容器。

作者:阿布来源:机械工业出版社|2017-10-19 16:02

技术沙龙 | 6月30日与多位专家探讨技术高速发展下如何应对运维新挑战!


2.1.2  字符串和容器(2)

5.可命名元祖:namedtuple

以上代码通过tuple访问使用索引,欠缺灵活性,可以通过namedtuple改进。代码如下:

  1. from collections import namedtuple  
  2.  
  3. stock_namedtuple = namedtuple('stock', ('date', 'price'))  
  4. stock_namedtuple_list = [stock_namedtuple(date, price) for date, price  
  5.                               in zip(date_array, price_array)]  
  6. # namedtuple访问使用price  
  7. print '20170119日价格:{}'.format(stock_namedtuple_list[1].price)  
  8. stock_namedtuple_list 

输出如下:

  1. 20170119日价格:29.58  
  2.  
  3. [stock(date='20170118'price='30.14'),  
  4.  stock(date='20170119'price='29.58'),  
  5.  stock(date='20170120'price='26.36'),  
  6.  stock(date='20170121'price='32.56'),  
  7.  stock(date='20170122'price='32.82')] 

6.字典推导式

使用字典dict来完成这个任务,同样使用字典推导式完成,代码更简洁。

  1. # 字典推导式:{key: value for in}  
  2. stock_dict = {date: price for date, price in  
  3.               zip(date_array, price_array)}  
  4. print '20170119日价格:{}'.format(stock_dict['20170119'])  
  5. stock_dict 

输出如下:

  1. 20170119日价格:29.58  
  2.  
  3. {'20170118': '30.14',  
  4.  '20170119': '29.58',  
  5.  '20170120': '26.36',  
  6.  '20170121': '32.56',  
  7.  '20170122': '32.82'} 

dict使用key-value存储,特点是根据key查询value,速度快,使用keys()和values()函数可以分别返回字典中的key列表与value列表。

  1. stock_dict.keys(), stock_dict.values() 

输出如下:

  1. (['20170121', '20170122', '20170118', '20170119', '20170120'],  
  2. ['32.56', '32.82', '30.14', '29.58', '26.36']) 

7.有序字典:OrderedDict

仔细观察上面的keys()函数可以发现,其返回的结果和之前date_array的顺序并没有保持一致,字典的存储是无序的。

【需求2】下面需要这个字典按照时间顺序返回。所以这里不能用普通的dict,应该使用OrderedDict,它将按照插入的顺序排列,代码如下:

  1. from collections import OrderedDict  
  2. stock_dict = OrderedDict(  
  3.     (date, price) for date, price in zip(date_array, price_array))  
  4. stock_dict.keys() 

输出如下:

  1. ['20170118', '20170119', '20170120', '20170121', '20170122'] 

如上代码所示,使用OrderedDict构造的dict返回的keys是按照插入顺序返回的。

喜欢的朋友可以添加我们的微信账号:

51CTO读书频道二维码


51CTO读书频道活动讨论群:365934973

【责任编辑:book TEL:(010)68476606】

回书目   上一节   下一节
点赞 0
分享:
大家都在看
猜你喜欢

读 书 +更多

数据库系统概念

本书是数据库系统方面的经典教材之一。国际上许多著名大学包括斯坦福大学、耶鲁大学、得克萨斯大学、康奈尔大学、伊利诺伊大学、印度理工学...

订阅51CTO邮刊

点击这里查看样刊

订阅51CTO邮刊