技术开发 频道

详解Python 3.1的新变化之标准程序库篇

  【IT168 技术文档】Python 3.0发布七个月之后,Python核心开发人员于2009年6月27日发布了新的Python 3.1版本。虽然此3.1版本只是对Python 3.0的一次小型升级,但是它不仅为开发者带来许多让人感兴趣的特性,同时在性能方面也有所改善。在上一篇中,我们为读者详细介绍了Python 3.1版本在核心语言方面的变化,而本文则将要为读者介绍新版本中标准程序库方面的变化。

  相关文章:详解Python 3.1新变化之核心语言篇

  一、PEP-372:有序字典

  主要的新增物是一个有序字典类,使其有了自己的PEP。当遍历一个排序后的字典的时候,您将得到一个键列表和一些值,并且其顺序正是其插入的顺序——这正是我们所希望的。 下面我们用一个实例来说明排序后的字典和常规字典之间的区别:

  >>> items = [('a', 1), ('b', 2), ('c', 3)]

  
>>> d = dict(items)

  
>>> d

  {
'a': 1, 'c': 3, 'b': 2}

  
>>> from collections import OrderedDict

  
>>> od = OrderedDict(items)

  
>>> od

  OrderedDict([(
'a', 1), ('b', 2), ('c', 3)])

  
>>> list(d.keys())

  [
'a', 'c', 'b']

  
>>> list(od.keys())

  [
'a', 'b', 'c']

  如您所见,有序字典维护有个元素的原始顺序,而标准字典则没有。不过有一点要注意,如果你使用命名参数而非键/值对来填充此字典的话,它就维护其顺序。 也许这是一个bug,因为使用命名参数是一种初始化字典的理想方式,并且个元素有一个明确的从左到右的顺序。我们这里使用的元素与第一个例子完全一样:

  >>> d = dict(a=1, b=2, c=3)

  
>>> d

  {
'a': 1, 'c': 3, 'b': 2}

  
>>> od = OrderedDict(a=1, b=2, c=3)

  
>>> od

  OrderedDict([(
'a', 1), ('c', 3), ('b', 2)])
0
相关文章