J'ai examiné la documentation sur Python pour connaître les meilleures pratiques de formatage de code pour les grandes listes et les dictionnaires, par exemple,
something = {'foo' : 'bar', 'foo2' : 'bar2', 'foo3' : 'bar3'..... 200 chars wide, etc..}
ou
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
ou
something = {
'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
}
Comment gérer l'imbrication profonde de listes/dictionnaires?
Ma manière préférée est:
something = {'foo': 'bar',
'foo2': 'bar2',
'foo3': 'bar3',
...
'fooN': 'barN'}
le style d'indentation de aaronasterling est ce que je préfère. Ceci, ainsi que plusieurs autres styles, sont expliqués dans un autre SO Question . Surtout, la réponse de Lennart Regebro a donné un bon aperçu.
Mais ce style a été le plus voté:
my_dictionary = {
1: 'something',
2: 'some other thing',
}
Selon le guide de style PEP8 , il existe deux manières de formater un dictionnaire:
mydict = {
'key': 'value',
'key': 'value',
...
}
OR
mydict = {
'key': 'value',
'key': 'value',
...
}
Si vous voulez vous conformer à PEP8, je dirais que tout le reste est techniquement faux.
Définissez votre dictionnaire comme vous le souhaitez, puis essayez ceci:
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}
Aimez-vous la sortie?
Si vous passez par ganeti (ce qui respecte PEP 8), vous devriez choisir la troisième option.
something = {
'foo1': 'bar1',
'foo2': 'bar2',
'foo3': 'bar3',
...
}
J'aime cette esp. car vous pouvez sélectionner uniquement les éléments souhaités. Et je pense que supprimer ou ajouter des éléments à l'une ou l'autre extrémité est plus rapide de cette façon.
Remarque: Comme indiqué dans le commentaire, il ne doit y avoir aucun espace avant ":" (E203) selon PEP.
Certainement PAS l'option 1, une des forces de Python est sa lisibilité. L'option 1 diminue considérablement cette lisibilité.
Sur 2 et 3, je ferai écho aux mêmes raisons que pyfunc a énoncées pour les deux.
Cependant, dans mon propre code, je préfère l'option 3 simplement parce que le premier élément est parfois "perdu" en étant à la fin de la ligne de déclaration, et en jetant un coup d'œil rapide sur le code, je ne la vois pas immédiatement. Je sais que c'est un peu bête, mais l'esprit fonctionne de manière mystérieuse ...
Je préfère le deuxième ou le troisième.
Raison:
Eh bien, le premier est interdit, car vos lignes ne doivent avoir que 79 caractères de large. En ce qui concerne les deux autres options, je suppose que c'est une question de goût, mais je préfère personnellement la deuxième option.
Je souhaite mentionner l’option suivante, qui n’est pas spécifiquement mentionnée dans le PEP8, mais mentionnée dans la documentation du dictionnaire : "Lorsque les clés sont des chaînes simples, il est parfois plus facile de spécifier des paires à l’aide d’arguments de mots clés:"
my_dict = dict(
foo = 1,
bar = 2,
baz = 3,
...
)
Cela ne règle toutefois pas la question de l'indentation.
J'aime la deuxième façon:
something = {'foo' : 'bar',
'foo2' : 'bar2',
'foo3' : 'bar3',
...
'fooN': 'barN'}
Avant de lire ce post, j'aurais opté pour la troisième option que vous donnez. Mais maintenant, je pourrais choisir celui qui n'est pas du style de Török Gábor:
my_dictionary = {1: 'quelque chose', 2: 'une autre chose',}
Mais honnêtement, quelque chose en dehors de votre première option est probablement bien.