Python "meilleure pratique de formatage" pour les listes, dictionnaires, etc.
j'ai cherché la documentation Python pour le formatage de code meilleures pratiques pour les grandes listes et 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?
11 réponses
ma méthode préférée est:
something = {'foo': 'bar',
'foo2': 'bar2',
'foo3': 'bar3',
...
'fooN': 'barN'}
le style d'indentation d'aaronasterling est ce que je préfère. Ceci, et plusieurs autres styles sont expliqués dans une autre Question de SO . En particulier la réponse de Lennart Regebro a donné une belle vue d'ensemble.
Mais ce style a été le plus voté pour:
my_dictionary = {
1: 'something',
2: 'some other thing',
}
, Selon le PEP8 guide de style il y a deux manières de formater un dictionnaire:
mydict = {
'key': 'value',
'key': 'value',
...
}
ou
mydict = {
'key': 'value',
'key': 'value',
...
}
si vous voulez vous conformer à PEP8, je dirais que tout le reste est techniquement faux.
Définissez votre dictionnaire de la façon que vous voulez et 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 allez par ganeti (qui respecte PEP 8) vous devez choisir la troisième option.
something = {
'foo1': 'bar1',
'foo2': 'bar2',
'foo3': 'bar3',
...
}
j'aime cette esp. parce que vous pouvez sélectionner seulement les éléments que vous souhaitez. Et je pense que supprimer ou ajouter des éléments à l'une ou l'autre extrémité est plus rapide de cette façon.
Note: comme indiqué dans le commentaire, il ne devrait pas y avoir de blanc avant": "(E203) selon PEP.
Eh bien, le premier est un no-go, puisque vos lignes ne devraient 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 préfère le deuxième ou le troisième.
raison:
- Chaque élément est sur sa propre ligne
- atteindre la fin de ligne pour ajouter un nouvel élément est une douleur dans un éditeur de texte
- Ajouter un nouvel élément est facile
- avec la troisième option, vous pouvez parfois vérifier le nombre d'éléments en sélectionnant ces lignes. La plupart des éditeurs vous indiqueront le nombre de lignes sélectionnées.
certainement pas l'option 1, l'une des forces de Python est sa lisibilité. L'Option 1 réduit considérablement cette lisibilité.
sur 2 et 3, je vais faire écho aux mêmes raisons pyfunc déclaré 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 regardant rapidement le code, parfois je ne le verrai pas immédiatement. Je sais c'est un peu idiot, mais l'esprit fonctionne de façon mystérieuse ...
j'adore 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 le style de Török Gábor:
my_dictionary = { 1: 'quelque chose', 2: "autre chose", }
mais honnêtement, tout sauf votre première option est probablement très bien.
je veux mentionner l'option suivante, qui n'est pas spécifiquement mentionnée dans le PEP8, mais qui est noté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 en utilisant des arguments de mots clés: "
my_dict = dict(
foo = 1,
bar = 2,
baz = 3,
...
)
il ne règle pas la question de l'indentation, cependant.