Deutsch   English   Français   Italiano  
<875ymj4u3r.fsf@izac.org>

View for Bookmarking (what is this?)
Look up another Usenet article

X-FeedAbuse: http://nntpfeed.proxad.net/abuse.pl feeded by 82.66.60.35
Path: ...!news.mixmin.net!proxad.net!feeder1-2.proxad.net!nntpfeed.proxad.net!pasdenom.info!news.izac.org!reader
From: Benoit Izac <use.reply.to@INVALID.ADDRESS>
Newsgroups: fr.comp.lang.python
Subject: Re: Mon code est lourd
Date: Thu, 05 May 2022 22:12:08 +0200
Message-ID: <875ymj4u3r.fsf@izac.org>
References: <62742832$0$22051$426a74cc@news.free.fr>
Reply-To: benoit.izac@free.fr
Mime-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
Injection-Info: keg.izac.org;
	logging-data="378697"; mail-complaints-to="usenet@izac.org"
Bytes: 1666
Lines: 41

Bonjour,

Le 05/05/2022 à 21:40, yves <yves@free.invalid> a écrit dans le message
<62742832$0$22051$426a74cc@news.free.fr> :

> from pprint import pprint
>
> def g():
>     yield('02', 'D', '27')
>     yield('02', 'L', '28')
>     yield('03', 'M', '01')
>     yield('03', 'M', '02')
>
>
> dic = {}
> l02,l03 = [],[]
> for elt in g():
>     m , d, nd = elt
>     if m == "02":
>         l02.append((d,nd))
>         dic['02'] = l02
>     elif m == "03":
>         l03.append((d,nd))
>         dic['03'] = l03
>
> pprint(dic)
>
> [...]
>
> Mais cette méthode de conversion du générateur en dictionnaire me
> paraît terriblement lourde, surtout qu'il y aura douze mois, c'est à
> dire douze branchement if/elif
>
> Vous auriez des suggestions d'écriture plus élégante ?

dic = {}
for m, d, nd in g():
    dic.setdefault(m, []).append((d, nd))
pprint(dic)

-- 
Benoit Izac