proposal online enhancement array python code-formatting

online - Python "mejor práctica de formato" para listas, diccionario, etc.



python formatter online (11)

Antes de leer este post, habría optado por la tercera opción que usted da. Pero ahora podría apostar por el que NO es el estilo de Török Gábor:

mi_diccionario = {1: ''algo'', 2: ''alguna otra cosa'',}

Pero honestamente, cualquier cosa aparte de tu primera opción probablemente esté bien.

He estado revisando la documentación de Python para conocer las mejores prácticas de formato de código para grandes listas y diccionarios, por ejemplo,

something = {''foo'' : ''bar'', ''foo2'' : ''bar2'', ''foo3'' : ''bar3''..... 200 chars wide, etc..}

o

something = {''foo'' : ''bar'', ''foo2'' : ''bar2'', ''foo3'' : ''bar3'', ... }

o

something = { ''foo'' : ''bar'', ''foo2'' : ''bar2'', ''foo3'' : ''bar3'', ... }

¿Cómo manejo el anidamiento profundo de listas / diccionarios?


Bueno, el primero es un no-go, ya que sus líneas deben tener solo 79 caracteres de ancho. Con respecto a las otras dos opciones, supongo que es una cuestión de gustos, pero personalmente prefiero la segunda opción.


De acuerdo con la guía de estilo PEP8, hay dos formas de formatear un diccionario:

mydict = { ''key'': ''value'', ''key'': ''value'', ... }

O

mydict = { ''key'': ''value'', ''key'': ''value'', ... }

Si quieres ajustarte a PEP8, diría que cualquier otra cosa es técnicamente incorrecta.


Defina su diccionario de la forma que desee y luego intente esto:

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}

¿Te gusta la salida?


Definitivamente NO es la opción 1, una de las fortalezas de Python es su legibilidad. La opción 1 disminuye severamente esa legibilidad.

De los 2 y 3, haré eco de las mismas razones que Pyfunc indicó para ambos.

Sin embargo, en mi propio código, prefiero la opción 3 simplemente porque el primer elemento a veces se "pierde" al estar al final de la línea de declaración, y al mirar rápidamente el código a veces no lo veo de inmediato. Sé que es un poco tonto, pero la mente funciona de maneras misteriosas ...


El estilo de sangría de aaronasterling es lo que prefiero. Este y muchos otros estilos se explican en otra pregunta SO . Especialmente la respuesta de Lennart Regebro dio un buen resumen.

Pero este estilo fue el más votado:

my_dictionary = { 1: ''something'', 2: ''some other thing'', }


Me encanta la segunda forma:

something = {''foo'' : ''bar'', ''foo2'' : ''bar2'', ''foo3'' : ''bar3'', ... ''fooN'': ''barN''}


Mi forma preferida es:

something = {''foo'': ''bar'', ''foo2'': ''bar2'', ''foo3'': ''bar3'', ... ''fooN'': ''barN''}


Prefiero el segundo o el tercero.

Razón:

  1. Cada elemento está en su propia línea.
  2. Llegar al final de la línea para agregar un nuevo elemento es una molestia en un editor de texto
  3. Añadir un nuevo elemento es fácil
  4. Con la tercera opción, a veces puede verificar el número de elementos seleccionando esas líneas. La mayoría de los editores le dirán el número de líneas seleccionadas.

Quiero mencionar la siguiente opción, que no se menciona específicamente en PEP8, pero se indica en la documentación del diccionario : "Cuando las claves son cadenas simples, a veces es más fácil especificar pares usando argumentos de palabras clave:"

my_dict = dict( foo = 1, bar = 2, baz = 3, ... )

Sin embargo, no resuelve la cuestión de la sangría.


Si vas por ganeti (que respeta el PEP 8) debes elegir la tercera opción.

something = { ''foo1'': ''bar1'', ''foo2'': ''bar2'', ''foo3'': ''bar3'', ... }

Me gusta este esp Porque puedes seleccionar solo los elementos que quieras. Y siento que remover o agregar elementos a cualquiera de los extremos es más rápido de esta manera.

Nota: Como se señaló en el comentario, no debe haber espacios en blanco antes de '':'' (E203) según PEP.