usar recorrer posiciones llenar lista for ejercicios ejemplo diccionarios diccionario dentro con como python string interpolation

recorrer - Interpolación de cadenas de Python usando diccionario y cadenas



recorrer diccionario python (8)

Actualización 2016: a partir de Python 3.6 puede sustituir variables en cadenas por nombre:

>>> origin = "London" >>> destination = "Paris" >>> f"from {origin} to {destination}" ''from London to Paris''

Tenga en cuenta el prefijo f" . Si lo intenta en Python 3.5 o una SyntaxError anterior, obtendrá un SyntaxError .

Consulte https://docs.python.org/3.6/reference/lexical_analysis.html#f-strings

Dado:

dict = {"path": "/var/blah"} curr = "1.1" prev = "1.0"

¿Cuál es la forma mejor / más corta de interpolar la cadena para generar lo siguiente:

ruta: / var / blah curr: 1.1 prev: 1.0

Sé que esto funciona:

str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % {"path": dict["path"],"curr": curr, "prev": prev}

Pero esperaba que hubiera un camino más corto, como por ejemplo:

str = "path: %(path)s curr: %s prev: %s" % (dict, curr, prev)

Mis disculpas si esto parece una pregunta demasiado pedante.


Por qué no:

mystr = "path: %s curr: %s prev: %s" % (mydict[path], curr, prev)

Por cierto, he cambiado un par de nombres que usabas para arruinarte a los nombres integrados. No hagas eso, nunca es necesario y de vez en cuando perderás mucho tiempo rastreando el mal comportamiento que causa (donde algo se está usando). el nombre incorporado asumiendo que significa el incorporado pero usted lo ha ocultado con el nombre de nuestra propia variable).


Puede hacer lo siguiente si coloca sus datos dentro de un diccionario:

data = {"path": "/var/blah","curr": "1.1","prev": "1.0"} "{0}: {path}, {1}: {curr}, {2}: {prev}".format(*data, **data)


Puedes probar esto:

data = {"path": "/var/blah", "curr": "1.1", "prev": "1.0"} s = "path: %(path)s curr: %(curr)s prev: %(prev)s" % data


Si no desea agregar las variables invariables a su diccionario cada vez, puede hacer referencia tanto a las variables como a las claves del diccionario usando el formato:

str = "path {path} curr: {curr} prev: {prev}".format(curr=curr, prev=prev, **dict)

Lógicamente puede ser una forma incorrecta, pero hace que las cosas sean más modulares, ya que espera que curr y prev sean mayormente estáticas y que el diccionario se actualice.


Tal vez:

path = dict[''path''] str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % locals()

Quiero decir que funciona:

>>> dict = {"path": "/var/blah"} >>> curr = "1.1" >>> prev = "1.0" >>> path = dict[''path''] >>> str = "path: %(path)s curr: %(curr)s prev: %(prev)s" % locals() >>> str ''path: /var/blah curr: 1.1 prev: 1.0''

Simplemente no sé si consideras eso más corto.


También puedes (pronto) usar f-strings en Python 3.6, que es probablemente la forma más corta de formatear una cadena:

print(f''path: {path} curr: {curr} prev: {prev}'')

E incluso poner todos tus datos dentro de un dict:

d = {"path": path, "curr": curr, "prev": prev} print(f''path: {d["path"]} curr: {d["curr"]} prev: {d["prev"]}'')


Y, por supuesto, podría usar el método de cadena .format más nuevo (desde 2.6):

>>> mydict = {"path": "/var/blah"} >>> curr = "1.1" >>> prev = "1.0" >>> >>> s = "path: {0} curr: {1} prev: {2}".format(mydict[''path''], curr, prev) >>> s ''path: /var/blah curr: 1.1 prev: 1.0''

O, si todos los elementos estuvieran en el diccionario, puedes hacer esto:

>>> mydict = {"path": "/var/blah", "curr": 1.1, "prev": 1.0} >>> "path: {path} curr: {curr} prev: {prev}".format(**mydict) ''path: /var/blah curr: 1.1 prev: 1.0'' >>>

De la documentación de str.format() :

Este método de formato de cadena es el nuevo estándar en Python 3.0, y debería preferirse al formato de% descrito en Operaciones de formato de cadena en el nuevo código.