Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 字典文本的正确布局_Python_Dictionary_Coding Style - Fatal编程技术网

Python 字典文本的正确布局

Python 字典文本的正确布局,python,dictionary,coding-style,Python,Dictionary,Coding Style,我见过一些人们喜欢设置字典格式的不同方式,但大多数人似乎遵循以下两种方式之一: 备选方案1) 备选方案2) 在使用中,两者都做相同的事情,但是一个更python,是一个更好的方式格式化字典,是不是一个完全不正确 我很想知道哪种格式最被广泛接受,并且在我的脚本中使用会更好 在我被告知我没有做太多研究之前,我做了,这造成了更多的混乱,不同的网站,不同的人,不同的教程,经常使用不同的方式,我找不到任何地方说“这样做,这是正确的语法”对于解释器来说,它们是等价的。在任何给定的用例中,选择您认为其他人更容

我见过一些人们喜欢设置字典格式的不同方式,但大多数人似乎遵循以下两种方式之一:

备选方案1)

备选方案2)

在使用中,两者都做相同的事情,但是一个更python,是一个更好的方式格式化字典,是不是一个完全不正确

我很想知道哪种格式最被广泛接受,并且在我的脚本中使用会更好


在我被告知我没有做太多研究之前,我做了,这造成了更多的混乱,不同的网站,不同的人,不同的教程,经常使用不同的方式,我找不到任何地方说“这样做,这是正确的语法”

对于解释器来说,它们是等价的。在任何给定的用例中,选择您认为其他人更容易阅读的语法


这是主观的,但我个人只会对最小的字典使用第二种语法。

它们都是正确的方法。但是如果你已经初始化了一个100对的字典。第一个选项使它更易于阅读

Second选项适用于具有一对或两对词典的小型词典

本节PEP 8中讨论了它

连续行应垂直或垂直对齐包裹的元素 使用Python的隐式行连接括号、括号和 大括号,或使用悬挂缩进[5]

所以字典就在这里

…括号和大括号

它所做的就是给出几种多行语句的实现方法

# Aligned with opening delimiter.
foo = long_function_name(var_one, var_two,
                         var_three, var_four)

# More indentation included to distinguish this from the rest.
def long_function_name(
        var_one, var_two, var_three,
        var_four):
    print(var_one)

# Hanging indents should add a level.
foo = long_function_name(
    var_one, var_two,
    var_three, var_four)
所以在你的例子中

d ={'key1': 'value1', 'key2': 'value2'}
实际上并没有遵守PEP8,因为您错过了一个空间;它应该是(注意额外的空间。是的,它很迂腐):

至于多行版本,PEP8中的所有示例都在最后一行留下了结束括号(但没有具体说明应该放在哪里)。也有一些选择,你选择的似乎只是一种偏好(也是PEP8)。主要规则是:

使用悬挂缩进时,应注意以下事项 应用第一行和第二行不应该有争论 应使用压痕来清楚地将其自身区分为 续行

但此处仅适用悬挂缩进和与开头分隔符对齐的版本

# Aligned with opening delimiter.
d = {'key1': 'value1',
     'key2': 'value2'}

longerVariableName = {'key1': 'value1',
                      'key2': 'value2'}

# Hanging indents should add a level.
d = {
    'key1': 'value1',
    'key2': 'value2'}

longerVariableName = {
    'key1': 'value1',
    'key2': 'value2'}

有些方面在PEP8中没有涉及

  • 重命名变量或函数名不应破坏格式。新名称可以更短或更长

  • 添加/删除项目不应影响正上方或下方的行。您希望
    git diff
    -或其他VCS-仅显示更改

  • 如果你同意这些观点,你可能会想写不适合一行的短文,比如:

    my_first_dict_today = {
        key1: value1,
        key2: value2,
        key3: value3,
        }
    
    # note the comma after value3
    

    结束括号可以与最后一行或第一行对齐,PEP8同时允许这两行。

    因此,在给定的实例中,究竟哪一行更容易阅读,这是关键所在?例如,为了进行比较,我想使用选项1,因为你可以阅读一个专栏,但对于一些无关紧要的东西,电话簿选项2就足够了?@nu11p01n73R字典的布局在PEP8中没有涉及。因此,因为没有“权威”立场(即在PEP8中),选择哪种格式的答案都是意见。。我选择的形式很大程度上是基于它如何适合一条线,但没有空间后=是可怕的!我编辑了你的标题,因为它与语法无关(从语法上讲,两个结构都是有效的)。@user2864740:PEP确实提到了右大括号的位置(与最后一行或第一行对齐)。
    d = {'key1': 'value1', 'key2': 'value2'}
    
    # Aligned with opening delimiter.
    d = {'key1': 'value1',
         'key2': 'value2'}
    
    longerVariableName = {'key1': 'value1',
                          'key2': 'value2'}
    
    # Hanging indents should add a level.
    d = {
        'key1': 'value1',
        'key2': 'value2'}
    
    longerVariableName = {
        'key1': 'value1',
        'key2': 'value2'}
    
    my_first_dict_today = {
        key1: value1,
        key2: value2,
        key3: value3,
        }
    
    # note the comma after value3