teclas Actualmente estoy mostrando, cada uno en la nueva línea:python: ¿diccionario a cadena, formato personalizado? Sólo
'<br/>'.join(mydict)
¿Cómo puedo mostrar ellos como clave :: valor, cada uno en la nueva línea?
teclas Actualmente estoy mostrando, cada uno en la nueva línea:python: ¿diccionario a cadena, formato personalizado? Sólo
'<br/>'.join(mydict)
¿Cómo puedo mostrar ellos como clave :: valor, cada uno en la nueva línea?
pasar por el dict.items()
iterador que dará lugar a una clave, valor tupla:
'<br/>'.join(['%s:: %s' % (key, value) for (key, value) in d.items()])
Eso, o una solución aún más fresco usando join
para unirse a ambos elementos y los (clave, valor) pares, evitando la ahora obsoleta %
interpolación, utilizando sólo una única variable ficticia _
, y dejando caer la lista redundante comprensión:
"<br/>".join(":: ".join(_) for _ in mydict.items())
Tenga en cuenta que no tienen dicts pedidos, así que sin sorted()
puede que no obtenga lo que quiere:
>>> mydict = dict(a="A", b="B", c="C")
>>> ", ".join("=".join(_) for _ in mydict.items())
'a=A, c=C, b=B'
Esto también funciona solamente cuando todas las claves y los valores son cadenas, de lo contrario join
se quejan. Una solución más robusta sería:
", ".join("=".join((str(k),str(v))) for k,v in mydict.items())
ahora funciona muy bien, incluso para las claves y los valores de tipos mixtos:
>>> 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'
Por supuesto, para los tipos mixtos una llanura sorted()
no funcionará como se espera. Úselo solo si sabe que todas las teclas son cadenas (o todas numéricas, etc.). En el primer caso, se puede eliminar la primera str()
también:
>>> 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'
Me gustó lo Filip Dupanović hizo anteriormente. Modifiqué esto para que sea python3-ish usando el método str.format
.
'<br/>'.join(['{0}:: {1}'.format(key, value) for (key, value) in d.items()])
Modifiqué lo anterior para generar una cadena que podría alimentar a una declaración de SQL table create.
fieldpairs = ','.join(['{0} {1}'.format(key, value) for (key, value) in HiveTypes.items()])
Requiere edición. –
en Python 3.6 prefiero esta sintaxis, lo que hace que el código sea más legible incluso:
'<br/>'.join([f'{key}: {value}' for key, value in d.items()])
Esta es la solución más Pythonic que he visto. Increíble. –