June 25, 2011

Brève de code #5: découper une QueryString en une ligne de code python

L'idée est de récupérer un dictionnaire contenant les clés/valeurs de la querystring, en une ligne python.
Voici le code python:

  > qs = 'type=location&ville=paris&pieces=2&loyer=+700'
  > print dict([i.split('=') for i in qs.split('&')])
  {'loyer': '+700', 'ville': 'paris', 'type': 'location', 'pieces': '2'}

Explication de texte:

  • qs.split('&') découpe la chaine suivant le caractère '&' et retourne un tableau.
  • [.. for i in qs.split('&')] parcours ce tableau et remplace chaque élément par le résultat de ..
  • i.split('='). Chaque élément du tableau est remplacé par un sous-tableau de 2 éléments: la clé et la valeur, i.e 'pieces=2' donne ['pieces','2'].
  • dict(..) transforme le tableau résultant en dictionnaire (chaque élément du tableau, lui-même sous-tableau de 2 items devient une entrée du dictionnaire)
    [['a',1],['b',2], ...] donne {'a': 1, 'b': 2, ...}