actuellement, je n’affiche que les clés, chacune dans la nouvelle ligne:
'<br/>'.join(mydict)
comment puis-je les afficher comme clé :: valeur , chacun dans la nouvelle ligne?
Passez par l'itérateur dict.items()
qui donnera une clé, valeur Tuple:
'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()])
Cela, ou une solution encore plus cool utilisant join
pour joindre les deux paires éléments et (clé), en évitant l’interpolation maintenant obsolète %
, en utilisant une seule variable factice _
et en supprimant la compréhension de la liste redondante:
"<br/>".join(":: ".join(_) for _ in mydict.items())
Sachez que les dictés n'ont pas de commande, donc sans sorted()
, vous n'obtiendrez peut-être pas ce que vous voulez:
>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'
Cela ne fonctionne également que lorsque toutes les clés et valeurs sont des chaînes, sinon join
se plaindra. Une solution plus robuste serait:
", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
Maintenant, cela fonctionne très bien, même pour les clés et les valeurs de types mixtes:
>>> mydict = {'1':1, 2:'2', 3:3}
>>> ", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
'2=2, 3=3, 1=1'
Bien sûr, pour les types mixtes, une sorted()
simple ne fonctionnera pas comme prévu. Utilisez-le uniquement si vous savez que toutes les clés sont des chaînes (ou toutes numériques, etc.). Dans le premier cas, vous pouvez également supprimer la première str()
:
>>> mydict = dict(a=1, b=2, c=2)
>>> ", ".join("=".join((k,str(v))) for k,v in sorted(mydict.items()))
'a=1, b=2, c=3'
En python 3.6, je préfère cette syntaxe, ce qui rend le code encore plus lisible:
'<br/>'.join([f'{key}: {value}' for key, value in d.items()])
J'ai aimé ce que Filip Dupanović a fait ci-dessus. J'ai modifié cela pour qu'il soit python3-ish en utilisant la méthode str.format
.
'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])
J'ai modifié ce qui précède pour générer une chaîne que je pourrais alimenter en une instruction de création de table SQL.
fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])