El siguiente código genera una KeyErrorexcepción:
addr_list_formatted = []
addr_list_idx = 0
for addr in addr_list: # addr_list is a list
addr_list_idx = addr_list_idx + 1
addr_list_formatted.append("""
"{0}"
{
"gamedir" "str"
"address" "{1}"
}
""".format(addr_list_idx, addr))
¿Por qué?
Estoy usando Python 3.1.

enumeratepara obtener los puntos).Respuestas:
El problema son esos
{y los}caracteres que tiene allí que no especifican una clave para formatear. Necesita duplicarlos, así que cambie su código a:addr_list_formatted.append(""" "{0}" {{ "gamedir" "str" "address" "{1}" }} """.format(addr_list_idx, addr))fuente
{en la respuesta es solo para decirle alformatmétodo que no hay una clave para formatear aquí (por lo que se escapan en la cadena formateada y no debería ser un problema para construir un JSON de esa manera). Alternativamente, hay otras formas eficientes de manipular cadenas, como eljoinmétodo:"".join(['{"', var_name, '":', value, '}'])