初始化dict的首选语法是什么:花括号文本{}或dict()函数?

2024-04-25 22:58:26 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在努力学习Python,并密切关注通用的编码标准。这似乎是一个毫无意义的挑剔问题,但我正在努力集中于最佳实践,因为我学到了,所以我不必忘记任何'坏'习惯。

我看到初始化dict的两种常用方法:

a = {
    'a': 'value',
    'another': 'value',
}

b = dict( 
    a='value',
    another='value',
)

哪一个被认为是“更Python”?你用哪一种?为什么?


Tags: 方法valueanotherdict习惯编码标准
3条回答

首选第一个版本:

  • 它适用于所有类型的键,因此您可以例如说{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
    
  • 如果字典文字的特殊语法不打算被使用,它可能就不存在了。

花括号。将关键字参数传递到dict()中,虽然它在许多情况下都很好地工作,但只有当关键字是有效的Python标识符时,才能初始化映射。

这是有效的:

a = {'import': 'trade', 1: 7.8}
a = dict({'import': 'trade', 1: 7.8})

这行不通:

a =                  dict(import='trade', 1=7.8)
>> SyntaxError: invalid syntax  ^

第一个,花括号。否则,您会遇到密钥中包含奇数字符的一致性问题,例如=

# Works fine.
a = {
    'a': 'value',
    'b=c': 'value',
}

# Eeep! Breaks if trying to be consistent.
b = dict( 
    a='value',
    b=c='value',
)

相关问题 更多 >