Ответ 1
Мой предпочтительный способ:
something = {'foo': 'bar',
'foo2': 'bar2',
'foo3': 'bar3',
...
'fooN': 'barN'}
Я просмотрел документацию Python для лучшей практики форматирования кода для больших списков и словарей, например
something = {'foo' : 'bar', 'foo2' : 'bar2', 'foo3' : 'bar3'..... 200 chars wide, etc..}
или
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
или
something = {
'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
Как обрабатывать глубокую вложенность списков/словарей?
Мой предпочтительный способ:
something = {'foo': 'bar',
'foo2': 'bar2',
'foo3': 'bar3',
...
'fooN': 'barN'}
стиль отступов aaronasterling - это то, что я предпочитаю. Это и несколько других стилей объясняются в другом SO-вопросе. Особенно ответ Lennart Regebro дал хороший обзор.
Но этот стиль был самым проголосовавшим за:
my_dictionary = {
1: 'something',
2: 'some other thing',
}
В соответствии с руководством по стилю PEP8 есть два способа форматирования словаря:
mydict = {
'key': 'value',
'key': 'value',
...
}
ИЛИ
mydict = {
'key': 'value',
'key': 'value',
...
}
Если вы хотите соответствовать PEP8, я бы сказал, что что-то еще технически неправильно.
Определите свой словарь любым способом, а затем попробуйте следующее:
from pprint import pprint
pprint(yourDict)
# for a short dictionary it returns:
{'foo': 'bar', 'foo2': 'bar2', 'foo3': 'bar3'}
# for a longer/nested:
{'a00': {'b00': 0,
'b01': 1,
'b02': 2,
'b03': 3,
'b04': 4,
'b05': 5,
'b06': 6,
'b07': 7,
'b08': 8,
'b09': 9},
'a01': 1,
'a02': 2,
'a03': 3,
'a04': 4,
'a05': 5,
'a06': 6,
'a07': 7,
'a08': 8,
'a09': 9,
'a10': 10}
Вам нравится вывод?
Если вы идете по ganeti (что соответствует PEP 8), вы должны выбрать третий вариант.
something = {
'foo1': 'bar1',
'foo2': 'bar2',
'foo3': 'bar3',
...
}
Мне нравится этот esp. потому что вы можете выбрать только те элементы, которые вы хотите. И я чувствую, что удаление или добавление элементов в оба конца происходит быстрее.
Примечание.. Как отмечено в комментарии, не должно быть пробелов перед ':' (E203) в соответствии с PEP.
Я предпочитаю второй или третий.
Причина:
Ну, первый - это не-go, так как ваши строки должны быть всего 79 символов. Что касается двух других вариантов, я полагаю, что это вопрос вкуса, но я лично предпочитаю второй вариант.
Определенно НЕ вариант 1, одна из сильных сторон Python - это его удобочитаемость. Вариант 1 значительно уменьшает эту удобочитаемость.
Из 2 и 3 я буду повторять те же причины, о которых пифунк заявил для обоих.
Однако в моем собственном коде я предпочитаю вариант 3 просто потому, что первый элемент иногда "теряется", находясь в конце строки объявления, и, быстро взглянув на код, я просто не увижу его немедленно. Я знаю это немного глупо, но ум работает таинственным образом...
Мне нравится второй способ:
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
'fooN': 'barN'}
Прежде чем читать этот пост, я бы выбрал третий вариант, который вы дадите. Но теперь я могу пойти за тем, который не является типом Török Gábor:
my_dictionary = { 1: "что-то", 2: "что-то другое", }
Но, честно говоря, все, что было в стороне от вашего первого варианта, возможно, прекрасно.