pythonic способ установки значений в словаре

#python #json #python-3.x #dictionary

#python #json #python-3.x #словарь

Вопрос:

У меня есть эти два кода:

 message = {}
message['code'] = "001"
message['value'] = "Test Value"
  

и

 message = {
    'code': "001",
    'value': "Test Value"
}
  

Оба работают и корректны при установке значений в словаре, но какой из них более полезен в работе или более питонический в использовании и почему? Мне просто стало любопытно, пока я создаю rest api. Заранее спасибо!

Комментарии:

1. Зачем выполнять 3 операции для инициализации словаря значениями, которые у вас уже есть, когда вы могли бы использовать только 1?

2. Если вы можете определить всю структуру за один шаг, конечно, это проще. Если значения собираются с помощью нескольких вызовов или вычисляются в последовательности шагов, вы можете предпочесть сохранять значения одно за другим в dict по мере их получения, вместо того, чтобы сохранять каждый результат в переменной и составлять полный dict в конце. Но это в значительной степени вопрос предпочтения или суждения в каждом конкретном случае.

3. @coldspeed привет, на самом деле я только что видел этот код в одном из проектов, которые я проверяю здесь на работе. Значит, второй код более питонический?

4. @jdehesa о, я вижу, хорошо, это отмечено. Спасибо за отзыв! 🙂

5. Оба имеют свои преимущества. Вы используете первый, когда кто-то дал вам огромный словарь, в котором вы хотите изменить только 1 или 2 значения ключа. Вы используете второй, если знаете, какие ключевые значения заданы заранее, без какой-либо логики для их вычисления. Просто для будущих ссылок, когда кто-то спросит вас, какой способ лучше / чаще используется в разработке программного обеспечения, ответ, скорее всего, будет ОБОИМ.

Ответ №1:

Если вы можете записать словарь как единый литерал, вам следует это сделать.

Единственная ситуация, когда множественные назначения имеют смысл, — это если некоторые из назначений находятся в блоке (например, условие или цикл).

Комментарии:

1. Хорошо, спасибо! Мне стало любопытно из-за кода, который я видел в других проектах в нашей работе. Теперь я понимаю вариант использования нескольких назначений.