Deutsch   English   Français   Italiano  
<62742832$0$22051$426a74cc@news.free.fr>

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

Path: ...!2.eu.feeder.erje.net!feeder.erje.net!fdn.fr!usenet-fr.net!agneau.org!nntpfeed.proxad.net!proxad.net!feeder1-1.proxad.net!212.27.60.64.MISMATCH!cleanfeed3-b.proxad.net!nnrp3-2.free.fr!not-for-mail
From: yves <yves@free.invalid>
Subject: Mon code est lourd
Newsgroups: fr.comp.lang.python
User-Agent: Pan/0.144 (Time is the enemy; 28ab3ba git.gnome.org/pan2)
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Date: 05 May 2022 19:40:34 GMT
Lines: 65
Message-ID: <62742832$0$22051$426a74cc@news.free.fr>
Organization: Guest of ProXad - France
NNTP-Posting-Date: 05 May 2022 21:40:34 CEST
NNTP-Posting-Host: 89.226.117.233
X-Trace: 1651779634 news-1.free.fr 22051 89.226.117.233:58822
X-Complaints-To: abuse@proxad.net
Bytes: 2060

Bonjour,

soit une séquence, un générateur (de tuples en l'occurrence)

('02', 'D', '27')
('02', 'L', '28')
('03', 'M', '01')
('03', 'M', '02')

Pour la petite histoire, 
02 et 03 correspondent à Février et Mars
D 27; c'est dimanche 27, etc...


Je voudrais arriver à imprimer:
02
D 27
L 28
03
M 01
M 02

En repassant par un  dictionnaire, j'ai ça:

#+begin_src python :results output :exports both

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)


#+end_src
#+RESULTS:
: {'02': [('D', '27'), ('L', '28')], '03': [('M', '01'), ('M', '02')]}

Et à partir du dictionnaire, l'impression finale est facile.

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 ?


@+
-- 
Yves