5

您认为在代码中编写字典文字时最常用的约定是什么?

我会写一个可能的约定作为答案。

4

5 回答 5

21
my_dictionary = {
    1: 'something',
    2: 'some other thing',
}
于 2009-09-16T09:12:32.447 回答
15

我想说几乎没有标准。

我见过两种缩进方式:

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',
                      })

我建议您适应编写您正在编辑的代码的人的风格。如果是您的代码:随心所欲。:-)

于 2009-09-16T09:24:58.417 回答
8

关于端大括号:我更喜欢这样:

my_dictionary = {
   'a': 'first value',
   'b': 'second',
   }

我会告诉你为什么:因为 Python 代码缩进没有关闭标记,所以代码缩进是这样的:第一行(if、while、def 等)从子句的其余部分缩进,所有其他行都缩进相同的金额。该子句的最后一行与其他所有内容一起缩进。与第一行缩进相同的下一行是下一个子句的第一行,而不是这一行的最后一行。

因此,我喜欢使用与代码子句类似的约定来缩进数据结构,即使数据结构具有显式的结束标记,因此可以具有更大的灵活性。

于 2009-09-16T10:04:33.733 回答
4

缩进样式 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 的语言中)时,您经常会读到的一件事是:“为什么要给它们额外的行?它们有那么重要吗?”。

不过,归根结底,这主要是一种味道。

于 2009-09-21T13:58:24.977 回答
-3

如果字典太大而不能放在一行中,我会这样做:

d = \
   {
   'a' : 'b',
   'c' : 'd'
   }
于 2009-09-21T11:59:46.407 回答