初始化字典时,首选语法是使用大括号 {} 还是 dict() 函数?
我正在努力学习Python,并且非常关注常见的编码标准。这个问题可能看起来有点小题大做,但我希望在学习的过程中专注于最佳实践,这样以后就不需要去纠正一些“坏习惯”了。
我看到有两种常见的方法来初始化一个字典:
a = {
'a': 'value',
'another': 'value',
}
b = dict(
a='value',
another='value',
)
哪种方法被认为是“更符合Python风格”的呢?你通常使用哪种?为什么?
7 个回答
65
第一种版本更好:
- 它适用于各种类型的键,比如你可以写
{1: 'one', 2: 'two'}
。而第二种写法只适用于(某些)字符串类型的键。根据键的类型使用不同的语法,会让人觉得不太一致,没必要。 它的速度更快:
$ python -m timeit "dict(a='value', another='value')" 1000000 loops, best of 3: 0.79 usec per loop $ python -m timeit "{'a': 'value','another': 'value'}" 1000000 loops, best of 3: 0.305 usec per loop
- 如果字典字面量的特殊语法不是为了使用而设计的,那它可能就不会存在。
100
首先,使用大括号。否则,你可能会遇到一些问题,比如键里面有奇怪的字符,比如=
,这样会导致不一致。
# Works fine.
a = {
'a': 'value',
'b=c': 'value',
}
# Eeep! Breaks if trying to be consistent.
b = dict(
a='value',
b=c='value',
)
296
花括号。通过 dict()
传递关键字参数,虽然在很多情况下都能很好地工作,但只有当键是有效的Python标识符时,才能初始化一个字典。
这个是可以的:
a = {'import': 'trade', 1: 7.8}
a = dict({'import': 'trade', 1: 7.8})
这个不行:
a = dict(import='trade', 1=7.8)
这会导致以下错误:
a = dict(import='trade', 1=7.8)
^
SyntaxError: invalid syntax