您认为在代码中编写字典文字时最常用的约定是什么?
我会写一个可能的约定作为答案。
my_dictionary = {
1: 'something',
2: 'some other thing',
}
我想说几乎没有标准。
我见过两种缩进方式:
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(在 Lennart 的回答之后):
my_dictionary = {1: 'thing_one',
2: 'thing_two',
...
n: 'thing_n'}
这可能是 Python 代码中括号实体最无缝的缩进样式,因为它非常类似于 Python 的空白格式。在 Python 代码中使用 C 风格的缩进对我来说总是有点尴尬,我怀疑它主要是因为习惯于类 C 语言的程序员(因为它们无处不在)可能没有接触过不同的缩进风格。
一个缺点可能是在开头或结尾插入比其他样式更难。考虑到一个支持编写 Python 代码的合适的编辑器,它应该不会有太大的不同。
在上下文中尝试这种缩进风格,并将其与 C 风格的缩进并排比较,然后决定哪一种看起来更 Pythonic 和连贯。
也许这可以称为lisp 风格的缩进,因为它是 lisp 代码自几个世纪以来一直缩进的方式,但它也经常用于 Smalltalk 代码中。在讨论括号的位置(在类似 Lisp 的语言中)时,您经常会读到的一件事是:“为什么要给它们额外的行?它们有那么重要吗?”。
不过,归根结底,这主要是一种味道。
如果字典太大而不能放在一行中,我会这样做:
d = \
{
'a' : 'b',
'c' : 'd'
}