{"id":299,"date":"2009-12-20T23:57:46","date_gmt":"2009-12-20T22:57:46","guid":{"rendered":"http:\/\/j-mad.com\/blog\/?p=299"},"modified":"2010-01-14T12:55:31","modified_gmt":"2010-01-14T11:55:31","slug":"django-dicts-rivers-toi-aussi-devient-fan","status":"publish","type":"post","link":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/","title":{"rendered":"Django : Dict&#8217;s Rivers, toi aussi devient fan."},"content":{"rendered":"<p>C&#8217;est <a title=\"benoitc\" href=\"http:\/\/twitter.com\/benoitc\">benoitc<\/a> qui en me parlant des dicts fournis par Django m&#8217;a fait d\u00e9couvrir les quelques classes bien utiles d\u00e9finis dans <a href=\"http:\/\/code.djangoproject.com\/browser\/django\/trunk\/django\/utils\/datastructures.py\">datastructures.py <\/a>du module utils de django.<\/p>\n<p>Ce sont donc, comme le titre de ce petit billet (plus m\u00e9mo que billet) l&#8217;explicite bien des dicts.<\/p>\n<h1>1- Le MergeDict<\/h1>\n<p>On le construit en lui donnant plusieurs dict. Il en fait une esp\u00e8ce de gros dict virtuel qui contient tout les dicts. Si on tente une op\u00e9ration sur une cl\u00e9 (un has_key, un get ou un __get_item__ ) il la cherchera\u00a0 dans tout les dicts. Par contre si elle est pr\u00e9sente dans plusieurs dict, il utilisera la premi\u00e8re occurrence qu&#8217;il trouve (pour le get par exemple).<\/p>\n<p>Un dict qui peut \u00eatre utile, surement.<\/p>\n<h1>2- Le MultiValueDict<\/h1>\n<p>L\u00e0 encore, le nom parle de lui-m\u00eame. C&#8217;est donc un dict qui permet d&#8217;avoir non pas une seule valeur, mais une liste de valeur par cl\u00e9. En plus des fonctions classiques des dicts, elle offre donc getlist, setlist, setlistdefault et appendlist pour pouvoir interagir avec les instances de la classe.<\/p>\n<h1>3- Le DotExpandedDict<\/h1>\n<p>Ce Dict est un peu un OVNI. En fait la classe se contente de red\u00e9finir un constructeur qui va vous permettre de construire des dicts qui contiennent eux m\u00eames des dicts et celant en passant en param\u00e8tres des cha\u00eenes de caract\u00e8res construite d&#8217;une mani\u00e8re pr\u00e9cise (en utilisant des .)<\/p>\n<p>Un exemple (celui donn\u00e9 dans le code) sera surement plus parlant.<\/p>\n<div class=\"codecolorer-container python default\" style=\"overflow:auto;white-space:nowrap;width:435px;\"><div class=\"python codecolorer\"><span class=\"sy0\">&gt;&gt;&gt;<\/span> d <span class=\"sy0\">=<\/span> DotExpandedDict<span class=\"br0\">&#40;<\/span><span class=\"br0\">&#123;<\/span><span class=\"st0\">'person.1.firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Simon'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> \\<br \/>\n<span class=\"st0\">'person.1.lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Willison'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> \\<br \/>\n<span class=\"st0\">'person.2.firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Adrian'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> \\<br \/>\n<span class=\"st0\">'person.2.lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Holovaty'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#41;<\/span><br \/>\n<span class=\"sy0\">&gt;&gt;&gt;<\/span> d<br \/>\n<span class=\"br0\">&#123;<\/span><span class=\"st0\">'person'<\/span>: <span class=\"br0\">&#123;<\/span><span class=\"st0\">'1'<\/span>: <span class=\"br0\">&#123;<\/span><span class=\"st0\">'lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Willison'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Simon'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'2'<\/span>: <span class=\"br0\">&#123;<\/span><span class=\"st0\">'lastname'<\/span>:<span class=\"br0\">&#91;<\/span><span class=\"st0\">'Holovaty'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Adrian'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"sy0\">&gt;&gt;&gt;<\/span> d<span class=\"br0\">&#91;<\/span><span class=\"st0\">'person'<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><span class=\"st0\">'1'<\/span>: <span class=\"br0\">&#123;<\/span><span class=\"st0\">'lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Willison'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Simon'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'2'<\/span>: <span class=\"br0\">&#123;<\/span><span class=\"st0\">'lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Holovaty'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Adrian'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><span class=\"br0\">&#125;<\/span><br \/>\n<span class=\"sy0\">&gt;&gt;&gt;<\/span> d<span class=\"br0\">&#91;<\/span><span class=\"st0\">'person'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#91;<\/span><span class=\"st0\">'1'<\/span><span class=\"br0\">&#93;<\/span><br \/>\n<span class=\"br0\">&#123;<\/span><span class=\"st0\">'lastname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Willison'<\/span><span class=\"br0\">&#93;<\/span><span class=\"sy0\">,<\/span> <span class=\"st0\">'firstname'<\/span>: <span class=\"br0\">&#91;<\/span><span class=\"st0\">'Simon'<\/span><span class=\"br0\">&#93;<\/span><span class=\"br0\">&#125;<\/span><\/div><\/div>\n<h1>4- Le SortedDict<\/h1>\n<p>C&#8217;est mon pr\u00e9f\u00e9r\u00e9, tout simplement parce que j&#8217;ai d\u00e9j\u00e0 du l&#8217;utiliser et qu&#8217;il m&#8217;a permis de ne pas avoir \u00e0 le recoder moi-m\u00eame. Il se contente de garder l&#8217;ordre dans lequel on ins\u00e8re des choses dedans. Pour \u00eatre clair, lorsque l&#8217;on it\u00e8re dessus, il va utiliser l&#8217;ordre d&#8217;insertion des donn\u00e9es. Et \u00e7a, c&#8217;est vraiment cool.<\/p>\n<h1>5- Le reste<\/h1>\n<p>il reste encore deux classes dans ce sympathique petit fichier.<\/p>\n<p>Une ImmutableList, qui fonctionne comme un tuple et qui est compl\u00e9tement imutable (et l&#8217;on peut m\u00eame choisir le message d&#8217;erreur qu&#8217;il vous envoie \u00e0 la figure pour vous le dire qu&#8217;il est immutable.<\/p>\n<p>Un DictWrapper qui permet de s&#8217;assurer que les valeurs contenues dans le dict seront pass\u00e9es \u00e0 travers une fonction avant d&#8217;\u00eatre donn\u00e9 \u00e0 l&#8217;utilisateur, si la cl\u00e9 en rapport commence par un pr\u00e9fix donn\u00e9.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>C&#8217;est benoitc qui en me parlant des dicts fournis par Django m&#8217;a fait d\u00e9couvrir les quelques classes bien utiles d\u00e9finis dans datastructures.py du module utils de django. Ce sont donc, comme le titre de ce petit billet (plus m\u00e9mo que billet) l&#8217;explicite bien des dicts. 1- Le MergeDict On le construit en lui donnant plusieurs &hellip; <a href=\"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">Django : Dict&#8217;s Rivers, toi aussi devient fan.<\/span><\/a><\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_jetpack_newsletter_access":"","_jetpack_dont_email_post_to_subs":false,"_jetpack_newsletter_tier_id":0,"_jetpack_memberships_contains_paywalled_content":false,"_jetpack_feature_clip_id":0,"_jetpack_memberships_contains_paid_content":false,"footnotes":"","jetpack_publicize_message":"","jetpack_publicize_feature_enabled":true,"jetpack_social_post_already_shared":false,"jetpack_social_options":{"image_generator_settings":{"template":"highway","default_image_id":0,"font":"","enabled":false},"version":2},"jetpack_post_was_ever_published":false},"categories":[6],"tags":[99,98],"class_list":["post-299","post","type-post","status-publish","format-standard","hentry","category-django","tag-django","tag-python"],"aioseo_notices":[],"aioseo_head":"\n\t\t<!-- All in One SEO 4.9.8 - aioseo.com -->\n\t<meta name=\"description\" content=\"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.\" \/>\n\t<meta name=\"robots\" content=\"max-image-preview:large\" \/>\n\t<meta name=\"author\" content=\"J-Mad\"\/>\n\t<meta name=\"keywords\" content=\"django,python,django,python\" \/>\n\t<link rel=\"canonical\" href=\"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/\" \/>\n\t<meta name=\"generator\" content=\"All in One SEO (AIOSEO) 4.9.8\" \/>\n\t\t<meta property=\"og:locale\" content=\"fr_FR\" \/>\n\t\t<meta property=\"og:site_name\" content=\"Le Mad Blog | juste un blog\" \/>\n\t\t<meta property=\"og:type\" content=\"article\" \/>\n\t\t<meta property=\"og:title\" content=\"Django : Dict&#039;s Rivers, toi aussi devient fan. | Le Mad Blog\" \/>\n\t\t<meta property=\"og:description\" content=\"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.\" \/>\n\t\t<meta property=\"og:url\" content=\"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/\" \/>\n\t\t<meta property=\"article:published_time\" content=\"2009-12-20T22:57:46+00:00\" \/>\n\t\t<meta property=\"article:modified_time\" content=\"2010-01-14T11:55:31+00:00\" \/>\n\t\t<meta name=\"twitter:card\" content=\"summary\" \/>\n\t\t<meta name=\"twitter:title\" content=\"Django : Dict&#039;s Rivers, toi aussi devient fan. | Le Mad Blog\" \/>\n\t\t<meta name=\"twitter:description\" content=\"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.\" \/>\n\t\t<script type=\"application\/ld+json\" class=\"aioseo-schema\">\n\t\t\t{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#article\",\"name\":\"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog\",\"headline\":\"Django : Dict&#8217;s Rivers, toi aussi devient fan.\",\"author\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"publisher\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\"},\"datePublished\":\"2009-12-20T23:57:46+01:00\",\"dateModified\":\"2010-01-14T12:55:31+01:00\",\"inLanguage\":\"fr-fr\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#webpage\"},\"isPartOf\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#webpage\"},\"articleSection\":\"Django, Django, Python\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#breadcrumblist\",\"itemListElement\":[{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog#listItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"name\":\"D\\u00e9veloppement\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"position\":2,\"name\":\"D\\u00e9veloppement\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"name\":\"Python\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog#listItem\",\"name\":\"Home\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"position\":3,\"name\":\"Python\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"name\":\"Django\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/#listItem\",\"name\":\"D\\u00e9veloppement\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"position\":4,\"name\":\"Django\",\"item\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/\",\"nextItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#listItem\",\"name\":\"Django : Dict&#8217;s Rivers, toi aussi devient fan.\"},\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/#listItem\",\"name\":\"Python\"}},{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#listItem\",\"position\":5,\"name\":\"Django : Dict&#8217;s Rivers, toi aussi devient fan.\",\"previousItem\":{\"@type\":\"ListItem\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/category\\\/developpement\\\/python\\\/django\\\/#listItem\",\"name\":\"Django\"}}]},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\",\"name\":\"Le Mad Blog\",\"description\":\"juste un blog\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/\"},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/\",\"name\":\"J-Mad\",\"image\":{\"@type\":\"ImageObject\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#authorImage\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/6eb44e8eb2792583de23c66deb033f8b5ef4f7f7c535464d77cb9f643012d138?s=96&d=retro&r=g\",\"width\":96,\"height\":96,\"caption\":\"J-Mad\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#webpage\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/\",\"name\":\"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog\",\"description\":\"billet listant les classes d\\u00e9riv\\u00e9es de dict et qui sont fournis par django.\",\"inLanguage\":\"fr-fr\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#website\"},\"breadcrumb\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/2009\\\/12\\\/20\\\/django-dicts-rivers-toi-aussi-devient-fan\\\/#breadcrumblist\"},\"author\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"creator\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/author\\\/j-mad\\\/#author\"},\"datePublished\":\"2009-12-20T23:57:46+01:00\",\"dateModified\":\"2010-01-14T12:55:31+01:00\"},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#website\",\"url\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/\",\"name\":\"Le Mad Blog\",\"description\":\"juste un blog\",\"inLanguage\":\"fr-fr\",\"publisher\":{\"@id\":\"https:\\\/\\\/j-mad.com\\\/blog\\\/#organization\"}}]}\n\t\t<\/script>\n\t\t<!-- All in One SEO -->\n\n","aioseo_head_json":{"title":"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog","description":"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.","canonical_url":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/","robots":"max-image-preview:large","keywords":"django,python,django,python","webmasterTools":{"miscellaneous":""},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#article","name":"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog","headline":"Django : Dict&#8217;s Rivers, toi aussi devient fan.","author":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"publisher":{"@id":"https:\/\/j-mad.com\/blog\/#organization"},"datePublished":"2009-12-20T23:57:46+01:00","dateModified":"2010-01-14T12:55:31+01:00","inLanguage":"fr-fr","mainEntityOfPage":{"@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#webpage"},"isPartOf":{"@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#webpage"},"articleSection":"Django, Django, Python"},{"@type":"BreadcrumbList","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#breadcrumblist","itemListElement":[{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog#listItem","position":1,"name":"Home","item":"https:\/\/j-mad.com\/blog","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","name":"D\u00e9veloppement"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","position":2,"name":"D\u00e9veloppement","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","name":"Python"},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog#listItem","name":"Home"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","position":3,"name":"Python","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","name":"Django"},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/#listItem","name":"D\u00e9veloppement"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","position":4,"name":"Django","item":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/","nextItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#listItem","name":"Django : Dict&#8217;s Rivers, toi aussi devient fan."},"previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/#listItem","name":"Python"}},{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#listItem","position":5,"name":"Django : Dict&#8217;s Rivers, toi aussi devient fan.","previousItem":{"@type":"ListItem","@id":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/#listItem","name":"Django"}}]},{"@type":"Organization","@id":"https:\/\/j-mad.com\/blog\/#organization","name":"Le Mad Blog","description":"juste un blog","url":"https:\/\/j-mad.com\/blog\/"},{"@type":"Person","@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author","url":"https:\/\/j-mad.com\/blog\/author\/j-mad\/","name":"J-Mad","image":{"@type":"ImageObject","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#authorImage","url":"https:\/\/secure.gravatar.com\/avatar\/6eb44e8eb2792583de23c66deb033f8b5ef4f7f7c535464d77cb9f643012d138?s=96&d=retro&r=g","width":96,"height":96,"caption":"J-Mad"}},{"@type":"WebPage","@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#webpage","url":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/","name":"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog","description":"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.","inLanguage":"fr-fr","isPartOf":{"@id":"https:\/\/j-mad.com\/blog\/#website"},"breadcrumb":{"@id":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/#breadcrumblist"},"author":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"creator":{"@id":"https:\/\/j-mad.com\/blog\/author\/j-mad\/#author"},"datePublished":"2009-12-20T23:57:46+01:00","dateModified":"2010-01-14T12:55:31+01:00"},{"@type":"WebSite","@id":"https:\/\/j-mad.com\/blog\/#website","url":"https:\/\/j-mad.com\/blog\/","name":"Le Mad Blog","description":"juste un blog","inLanguage":"fr-fr","publisher":{"@id":"https:\/\/j-mad.com\/blog\/#organization"}}]},"og:locale":"fr_FR","og:site_name":"Le Mad Blog | juste un blog","og:type":"article","og:title":"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog","og:description":"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.","og:url":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/","article:published_time":"2009-12-20T22:57:46+00:00","article:modified_time":"2010-01-14T11:55:31+00:00","twitter:card":"summary","twitter:title":"Django : Dict's Rivers, toi aussi devient fan. | Le Mad Blog","twitter:description":"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django."},"aioseo_meta_data":{"post_id":"299","title":"Django : Dict's Rivers, toi aussi devient fan. | #site_title","description":"billet listant les classes d\u00e9riv\u00e9es de dict et qui sont fournis par django.","keywords":[{"label":"django,python","value":"django,python"}],"keyphrases":null,"primary_term":null,"canonical_url":null,"og_title":null,"og_description":null,"og_object_type":"default","og_image_type":"default","og_image_url":null,"og_image_width":null,"og_image_height":null,"og_image_custom_url":null,"og_image_custom_fields":null,"og_video":null,"og_custom_url":null,"og_article_section":null,"og_article_tags":null,"twitter_use_og":false,"twitter_card":"default","twitter_image_type":"default","twitter_image_url":null,"twitter_image_custom_url":null,"twitter_image_custom_fields":null,"twitter_title":null,"twitter_description":null,"schema":{"blockGraphs":[],"customGraphs":[],"default":{"data":{"Article":[],"Course":[],"Dataset":[],"FAQPage":[],"Movie":[],"Person":[],"Product":[],"ProductReview":[],"Car":[],"Recipe":[],"Service":[],"SoftwareApplication":[],"WebPage":[]},"graphName":"","isEnabled":true},"graphs":[]},"schema_type":null,"schema_type_options":null,"pillar_content":false,"robots_default":true,"robots_noindex":false,"robots_noarchive":false,"robots_nosnippet":false,"robots_nofollow":false,"robots_noimageindex":false,"robots_noodp":false,"robots_notranslate":false,"robots_max_snippet":null,"robots_max_videopreview":null,"robots_max_imagepreview":"large","priority":null,"frequency":null,"location":null,"local_seo":null,"breadcrumb_settings":null,"limit_modified_date":false,"ai":null,"created":"2020-12-20 21:00:54","updated":"2025-06-03 21:40:52","seo_analyzer_scan_date":null},"aioseo_breadcrumb":"<div class=\"aioseo-breadcrumbs\"><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\" title=\"Home\">Home<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/\" title=\"D\u00e9veloppement\">D\u00e9veloppement<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/\" title=\"Python\">Python<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\t<a href=\"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/\" title=\"Django\">Django<\/a>\n\t\t<\/span><span class=\"aioseo-breadcrumb-separator\">&raquo;<\/span><span class=\"aioseo-breadcrumb\">\n\t\t\tDjango : Dict\u2019s Rivers, toi aussi devient fan.\n\t\t<\/span><\/div>","aioseo_breadcrumb_json":[{"label":"Home","link":"https:\/\/j-mad.com\/blog"},{"label":"D\u00e9veloppement","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/"},{"label":"Python","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/"},{"label":"Django","link":"https:\/\/j-mad.com\/blog\/category\/developpement\/python\/django\/"},{"label":"Django : Dict&#8217;s Rivers, toi aussi devient fan.","link":"https:\/\/j-mad.com\/blog\/2009\/12\/20\/django-dicts-rivers-toi-aussi-devient-fan\/"}],"jetpack_publicize_connections":[],"jetpack_featured_media_url":"","jetpack_shortlink":"https:\/\/wp.me\/p12cdp-4P","jetpack_sharing_enabled":true,"_links":{"self":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/299","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/comments?post=299"}],"version-history":[{"count":3,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/299\/revisions"}],"predecessor-version":[{"id":391,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/posts\/299\/revisions\/391"}],"wp:attachment":[{"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/media?parent=299"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/categories?post=299"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/j-mad.com\/blog\/wp-json\/wp\/v2\/tags?post=299"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}