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 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 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