量化交易—Python基础语法与数据结构( 三 )


from collections import namedtupleStock = namedtuple('Stock', ['date', 'price'])dates = ('2021-01-01', '2021-01-02', '2021-01-03')prices = (128.8, 131.1, 129.5)stocks = [Stock(date, price) for date, price in zip(dates, prices)]for stock in stocks:print(stock.date, stock.price)在这个例子中 , 我们使用namedtuple创建了一个名为Stock的类 , 并指定其属性为'date'和'price' , 这可以使得元组中的元素具有更清晰的含义 。然后我们创建了一个包含namedtuple元素的列表 , 并使用for循环来遍历每个namedtuple 。这种方式使代码更具可读性 , 同时也更便于后续的数据操作 。运行上述代码的输出结果是:
2021-01-01 128.82021-01-02 131.12021-01-03 129.5字典推导式(dictionary comprehension)
是一种用来快速创建新字典的语法结构 。可以使用一种基于现有字典元素或其他可遍历对象的简洁方式来生成新的字典 。以下是使用字典推导式改进上面的代码:
from collections import namedtupleStock = namedtuple('Stock', ['date', 'price'])dates = ('2021-01-01', '2021-01-02', '2021-01-03')prices = (128.8, 131.1, 129.5)stocks = {date: price for date, price in zip(dates, prices)}stocks = {date: Stock(date, price) for date, price in stocks.items()}for stock in stocks.values():print(stock.date, stock.price)在改进后的代码中 , 将 namedtumple 对象用字典类型来保存 , 使用字典推导式先生成一组键值对(日期和价格)的字典 。然后再用另一条字典推导式构建 namedtumple 对象 , 最后可以直接遍历字典的值以获取键值对的数据 。
有序字典(OrderedDict)
Python 标准库中的 collections 模块提供了一个名为 OrderedDict 的有序字典类型 。与普通字典不同 , OrderedDict 记录了元素添加的顺序 , 因此可以在迭代时保持这个顺序 , 并支持一些有序字典专属的方法(如 popitem(last=True) 可以移除最后添加的元素) 。
可以使用 collections 模块中的 OrderedDict 类型来对上面的代码进行改进:
from collections import OrderedDict, namedtupleStock = namedtuple('Stock', ['date', 'price'])dates = ('2021-01-01', '2021-01-02', '2021-01-03')prices = (128.8, 131.1, 129.5)stocks = {date: price for date, price in zip(dates, prices)}stocks = OrderedDict((date, Stock(date, price)) for date, price in stocks.items())for stock in stocks.values():print(stock.date, stock.price)将 stocks 字典转化为了 OrderedDict 实例 。与普通字典不同 , OrderedDict 会记住元素添加的顺序并在迭代时保持这个顺序 , 输出结果可以保证有序 。
以上是对Python的基础语法与数据结构做了一个说明 , 下一期我们将继续对Python函数进行讲解 。




推荐阅读