Я включаю некоторое усилие изучить Python, и я обращаю пристальное внимание на общие стандарты кодирования. Это может походить на бессмысленно придирчивый в отношении гниды вопрос, но я пытаюсь сфокусироваться на лучших практиках, как я узнаю, таким образом, я не должен забывать 'плохие' привычки.
Я вижу две общепринятых методики для инициализации dict:
a = {
'a': 'value',
'another': 'value',
}
b = dict(
a='value',
another='value',
)
Который считается "большим количеством pythonic"? Который Вы используете? Почему?
Фигурные скобки. Передача аргументов с ключевыми словами в 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',
)
Первый вариант предпочтительнее:
{1: 'one', 2: 'two'}
. Второй вариант работает только для (некоторых) строковых ключей. Использование разных видов синтаксиса в зависимости от типа ключей было бы ненужной непоследовательностью. Быстрее:
$ python -m timeit "dict(a='value', another='value')"
1000000 циклов, лучший из 3: 0.79 юсека на цикл
$ python -m timeit "{'a': 'value', 'another': 'value'}"
1000000 циклов, лучший из 3: 0.305 usec на цикл