Sujet : Re: Mon code est lourd
De : use.reply.to (at) *nospam* INVALID.ADDRESS (Benoit Izac)
Groupes : fr.comp.lang.pythonDate : 05. May 2022, 22:12:08
Autres entêtes
Message-ID : <875ymj4u3r.fsf@izac.org>
References : 1
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