[Python-es] Cadena "a=1 b = 2" a diccionario

Ricardo Cárdenes Medina ricardo.cardenes en gmail.com
Vie Mar 12 12:14:23 CET 2010


2010/3/12 Arnau Sanchez <pyarnau en gmail.com>:
> On 12/03/10 11:54, Oswaldo Hernández wrote:
>
>> "dbname=bd user = usuario host= 192.168.22.5"
>>
>> Quiero convertirla a diccionario de forma que quede:
>> {"dbname":"bd", "user":"usuario", "host":"192.168.22.5"}
>>
>> Lo estoy haciendo de una forma bastante burda: elimino espacios a los
>> lados del signo '=', luego separo los pares con split, ...
>
> A falta de ver el código, yo diría que es lo suficientemente pythonica.

Ídem. A menos que alguno de los valores contenga espacios en sí mismo,
me parece suficiente. Otra cosa es la manera exacta en que lo haga.
Por ejemplo:

   s = "dbname=bd user = usuario host= 192.168.22.5"
   partes = []
   for x in s.split('='):
      partes.extend(x.split())
   d = dict(zip(partes[0::2], partes[1::2]))

hace el trabajo correctamente y sin la complicación de las expresiones
regulares..



Más información sobre la lista de distribución Python-es