Ceci est le dictionnaire
cars = {'A':{'speed':70,
'color':2},
'B':{'speed':60,
'color':3}}
Utiliser ceci for loop
for keys,values in cars.items():
print(keys)
print(values)
Il imprime ce qui suit:
B
{'color': 3, 'speed': 60}
A
{'color': 2, 'speed': 70}
Mais je veux que le programme l'imprime comme ceci:
B
color : 3
speed : 60
A
color : 2
speed : 70
Je viens de commencer à apprendre les dictionnaires, donc je ne sais pas comment faire cela.
cars = {1:4, 2:5}
alorscars[x]
est un entier mappé à la cléx
plutôt qu'un ensemble mappé à la cléx
. Dans ce cas, vous n'avez pas besoin d'utiliser lafor y in cars[x]:
ligne car il n'y a qu'une seule valeur que vous récupérez, sauf si vous utilisez quelque chose comme une liste ou un ensemble d'entiers, cela devrait fonctionner. Désolé, cela fait quelques mois, donc je ne me souviens pas complètement comment je suis arrivé à la conclusion de mon commentaire précédent. Vous pouvez m'envoyer votre code et je peux voir si je peux vous aiderVous pouvez utiliser le
json
module pour cela. Ladumps
fonction de ce module convertit un objet JSON en une chaîne correctement formatée que vous pouvez ensuite imprimer.La sortie ressemble à
La documentation spécifie également un tas d'options utiles pour cette méthode.
la source
print(json.dumps(cars, indent=4, ensure_ascii=False))
parce que sinon les caractères non ASCII sont illisibles.Une solution plus généralisée qui gère les dicts et les listes imbriqués de manière arbitraire serait:
Cela produit la sortie:
J'ai rencontré un besoin similaire et j'ai développé une fonction plus robuste comme exercice pour moi-même. Je l'inclus ici au cas où cela pourrait être utile à un autre. En exécutant nosetest, j'ai également trouvé utile de pouvoir spécifier le flux de sortie dans l'appel afin que sys.stderr puisse être utilisé à la place.
En utilisant cette fonction, la sortie de l'OP ressemble à ceci:
ce que j’ai personnellement trouvé plus utile et plus descriptif.
Compte tenu de l'exemple légèrement moins trivial de:
La solution demandée par l'OP donne ceci:
alors que la version `` améliorée '' donne ceci:
J'espère que cela apportera une certaine valeur à la prochaine personne à la recherche de ce type de fonctionnalité.
la source
pprint.pprint()
ici alors?Vous avez une structure imbriquée, vous devez donc également formater le dictionnaire imbriqué:
Cela imprime:
la source
pprint.pprint()
est un bon outil pour ce travail:la source
la source
Cela fonctionnera si vous savez que l'arbre n'a que deux niveaux:
la source
Vérifiez le one-liner suivant:
Production:
la source
sys.modules
, mais j'ai échoué. Voulez-vous essayer?Je préfère le formatage propre de
yaml
:production:
la source
pip install PyYAML
abord.la source
la source
Voici ma solution au problème. Je pense que l'approche est similaire, mais un peu plus simple que certaines des autres réponses. Il permet également un nombre arbitraire de sous-dictionnaires et semble fonctionner pour n'importe quel type de données (je l'ai même testé sur un dictionnaire qui avait des fonctions comme valeurs):
la source
Modifier le code MrWonderful
la source