Я прилагаю некоторые усилия для изучения Python и уделяю пристальное внимание общим стандартам кодирования. Это может показаться бессмысленным, но я пытаюсь сосредоточиться на передовых практиках, так как я учусь, поэтому мне не нужно избавляться от «плохих» привычек.
Я вижу два распространенных метода инициализации слова:
a = {
'a': 'value',
'another': 'value',
}
b = dict(
a='value',
another='value',
)
Что считается "более питоническим"? Что вы используете? Зачем?
python
dictionary
daotoad
источник
источник
{}
довольно равномерно, но я вижу много явногоdict()
подхода в другом месте. Я мог видеть выгоду от явного синтаксиса, но отсутствие подхода в официальных документах вызывало у меня подозрения. После публикации я просмотрел документы библиотекиdict
и обнаружил предупреждение о том, что ключи должны быть действительными идентификаторами, когдаdict
для инициализации dict используется явное .dict()
пишется -dict
это использует имя типа. Фигурные скобки ({}
) опираются на знаки препинания для определения типа.Ответы:
Фигурные скобки. Передача аргументов ключевых слов
dict()
, хотя это прекрасно работает во многих сценариях, может инициализировать карту, только если ключи являются действительными идентификаторами Python.Это работает:
Это не сработает:
источник
Первые фигурные скобки. В противном случае вы столкнетесь с проблемами согласованности ключей, в которых есть нечетные символы, например
=
.источник
Первая версия предпочтительнее:
{1: 'one', 2: 'two'}
. Второй вариант работает только для (некоторых) строковых ключей. Использование различных типов синтаксиса в зависимости от типа ключей было бы ненужным несоответствием.Это быстрее:
источник
Я думаю, что первый вариант лучше, потому что вы собираетесь получить доступ к значениям как ['a'] или ['other']. Ключи в вашем словаре являются строками, и нет никаких оснований делать вид, что это не так. Для меня синтаксис ключевого слова на первый взгляд выглядит умным, а на второй взгляд - неясным. Это имеет смысл только для меня, если вы работаете
__dict__
, и ключевые слова станут атрибутами позже, что-то вроде этого.источник
К вашему сведению, если вам нужно добавить атрибуты в ваш словарь (вещи, которые прикреплены к словарю, но не являются одним из ключей), тогда вам понадобится вторая форма. В этом случае вы можете инициализировать свой словарь ключами, содержащими произвольные символы, по одному, например, так:
источник
Иногда
dict()
хороший выбор:[random.randint (0,100) для x в диапазоне (0,7)]))
источник
Я почти всегда использую фигурные скобки; однако, в некоторых случаях, когда я пишу тесты, я делаю упаковку / распаковку ключевых слов, и в этих случаях dict () гораздо более удобен в обслуживании, поскольку мне не нужно менять:
чтобы:
Это также помогает в некоторых обстоятельствах, когда я думаю, что я мог бы захотеть превратить его в именованный кортеж или экземпляр класса позже.
В самой реализации, из-за моей одержимости оптимизацией, и когда я не вижу особого преимущества в обслуживании, я всегда предпочитаю фигурные скобки.
В тестах и реализации я бы никогда не использовал dict (), если есть вероятность, что ключи, добавленные тогда или в будущем, будут либо:
dict(1foo=2)
вызывает ошибку SyntaxError)источник