字典实战——创建字典的其它方式

未匹配的标注

最后,注意因为字典如此有用,逐渐有更多构建方式出现。比如,在2.3和之后版本中,这里显示的后两个对dict构造器(其实是类型名称)的调用有和在它们上面的字面量和键分配形式的同样效果:

{'name': 'Bob', 'age': 40} # Traditional literal expression
D = {} # Assign by keys dynamically
D['name'] = 'Bob'
D['age'] = 40
dict(name='Bob', age=40) # dict keyword argument form
dict([('name', 'Bob'), ('age', 40)]) # dict key/value tuples form

这所有四种形式创建了同样的两键的字典,但在不同情况下它们都很有用:

  • 如果可以提前拼写出整个字典,第一个很方便。
  • 如果需要在运行时一次一个字段地创建字典,第二个很有用。
  • 第三个比第一个方法的输入更少,但需要所有键都是字符串。
  • 如果需要在运行时将键和值构建为序列,最后一个很有用。

之前在排序时碰到了关键字参数;这个代码列表中的展示的第3个形式在今天Python代码已变得特别流行,因为它语法更少(因此更少机会犯错)。如表8-2所暗示的,这个列表中的最后一个形式也常与zip函数结合在一起使用,来绑定在运行时动态获得的独立的键列表和值列表(比如,解析出数据文件的列):

dict(zip(keyslist, valueslist)) # Zipped key/value tuples form
(ahead)

关于压缩字典的更多知识请参见下一节。假如所有的键的值初始都是一样的,还可以用这个特殊形式创建字典——简单地传入键的列表和所有值的初始值(默认为 None):

>>> dict.fromkeys(['a', 'b'], 0)
{'a': 0, 'b': 0}

虽然在Python生涯的当前点可以只用字面量和键赋值来勉强应付,但当开始将所有这些字典的创建形式应用在现实、灵活且动态的Python程序中时,很可能会发现它们的用处。

这一节的代码列表记录了在Python 2.X 和 3.X中创建字典的各种方式。然而,还有另一种方式来创建字典,它只在Python 3.X 和 2.7中存在:字典comprehension表达式。要了解最后一种形式是怎样的,需要前进到本章的下一节也是最后一节。

本文章首发在 LearnKu.com 网站上。

上一篇 下一篇
讨论数量: 0
发起讨论 只看当前版本


暂无话题~