¿Cómo formato una cadena usando un diccionario en python-3.x?

Resuelto Doran asked hace 13 años • 9 respuestas

Soy un gran admirador del uso de diccionarios para formatear cadenas. Me ayuda a leer el formato de cadena que estoy usando y también me permite aprovechar los diccionarios existentes. Por ejemplo:

class MyClass:
    def __init__(self):
        self.title = 'Title'

a = MyClass()
print 'The title is %(title)s' % a.__dict__

path = '/path/to/a/file'
print 'You put your file here: %(path)s' % locals()

Sin embargo, no puedo entender la sintaxis de Python 3.x para hacer lo mismo (o si eso es posible). quisiera hacer lo siguiente

# Fails, KeyError 'latitude'
geopoint = {'latitude':41.123,'longitude':71.091}
print '{latitude} {longitude}'.format(geopoint)

# Succeeds
print '{latitude} {longitude}'.format(latitude=41.123,longitude=71.091)
Doran avatar May 10 '11 22:05 Doran
Aceptado

¿Esto es bueno para ti?

geopoint = {'latitude':41.123,'longitude':71.091}
print('{latitude} {longitude}'.format(**geopoint))
cocoatomo avatar May 10 '2011 15:05 cocoatomo

Para descomprimir un diccionario en argumentos de palabras clave, utilice **. Además, el formato de nuevo estilo admite referencias a atributos de objetos y elementos de asignaciones:

'{0[latitude]} {0[longitude]}'.format(geopoint)
'The title is {0.title}s'.format(a) # the a from your first example
 avatar May 10 '2011 15:05