Как вы думаете, какое соглашение чаще всего используется при написании словарных литералов в коде?
Я напишу одно возможное соглашение в качестве ответа.
Как вы думаете, какое соглашение чаще всего используется при написании словарных литералов в коде?
Я напишу одно возможное соглашение в качестве ответа.
Я бы сказал, что стандарта почти нет.
Я видел два способа отступа:
Indent 1:
my_dictionary = {
'uno': 'something',
'number two': 'some other thing',
}
Indent 2:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
Я видел три места, где была концевая скобка:
End 1:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
End 2:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
End 3:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',}
И иногда вы оправдываете ценности:
my_dictionary = {'uno': 'something',
'number two': 'some other thing',
}
А иногда даже двоеточие:
my_dictionary = {'uno' : 'something',
'number two' : 'some other thing',
}
Что выглядит странно.
И иногда у вас есть запятая в конце, а иногда нет:
my_dictionary = {'uno': 'something',
'number two': 'some other thing'}
А иногда наклеиваешь все это в один ряд (если помещается).
my_dictionary = {'uno': 'something', 2: 'some other thing'}
Кажется, у каждого есть свое сочетание этих стилей. Лично я склоняюсь к стилю, который вы используете в своем примере, если нет причин не делать этого. Общие причины этого не делать, когда у вас есть словарь как часть оператора. Вот так:
amethodthattakesadict({'hey': 'this',
'looks': 'a',
'bit': 'shitty',
})
Я бы рекомендовал вам приспособиться к стилю парня, написавшего код, который вы редактируете. Если это ваш код: делайте, как хотите. :-)
О концевой скобке: я предпочитаю это так:
my_dictionary = {
'a': 'first value',
'b': 'second',
}
и я скажу вам, почему: поскольку отступ в коде Python не имеет близкого токена, код имеет отступ следующим образом: первая строка (if, while, def и т. д.) отступает от остальной части предложения, а все остальные строки имеют отступ. То же количество. Последняя строка предложения имеет отступ вместе со всем остальным. Следующая строка с таким же отступом, как и первая строка, является первой строкой следующего предложения, а не последней строкой этого.
Поэтому мне нравится создавать отступы в структурах данных, используя такое же соглашение, как и в предложениях кода, даже несмотря на то, что структуры данных имеют явный закрывающий токен и поэтому могут иметь большую гибкость.
Стиль отступа 1, стиль окончания 3 (после ответа Леннарта):
my_dictionary = {1: 'thing_one',
2: 'thing_two',
...
n: 'thing_n'}
Это может быть самый плавный стиль отступа для сущностей в квадратных скобках в коде Python, потому что он очень напоминает форматирование пробелов в Python. Переход к отступам в стиле C в коде Python всегда казался мне немного неудобным, и я подозреваю, что он в основном используется потому, что программисты, привыкшие к C-подобным языкам (из-за их вездесущности), возможно, не сталкивались с другими стилями отступов.
Недостатком может быть то, что вставка в начале или конце немного сложнее, чем в других стилях. Учитывая правильный редактор, который поддерживает написание кода Python, это не должно иметь большого значения.
Попробуйте этот стиль отступа в контексте и сравните его с отступом в стиле C, а затем решите, какой из них выглядит более питоническим и последовательным.
Возможно, это можно было бы назвать отступом в стиле Лиспа, потому что это способ, которым код Лиспа был отступом с столетий десятилетий, но он, например, также часто используется в коде Smalltalk. Одна вещь, которую вы часто будете слышать в дискуссиях о размещении скобок (в языках, подобных Лиспу): «Зачем давать им лишние строки? Они так важны?».
Хотя, в конце концов, это скорее вкусовщина.
Я делаю это, если словарь слишком велик и не помещается в одну строку:
d = \
{
'a' : 'b',
'c' : 'd'
}