Python: La compréhension de dictionnaires
Nous allons utiliser la même chaine de texte que pour la compréhension de liste.
>>> s = """AIN 1 01 00
AISNE 1 02 00
ALLIER 1 03 00
ALPES(BASSES-) 1 04 00
ALPES(HAUTES-) 1 05 00
ALPES-MARITIMES 1 06 00
ARDECHE 1 07 00
ARDENNES 1 08 00
ARIEGE 1 09 00
AUBE 1 10 00
AUDE 1 11 00
AVEYRON 1 12 00
BOUCHES-DU-RHONE 1 13 00
CALVADOS 1 14 00
CANTAL 1 15 00
CHARENTE 1 16 00
CHARENTE-INFERIEURE 1 17 00
CHER 1 18 00
CORREZE 1 19 00
CORSE 1 20 00
COTE-D'OR 1 21 00
COTES-DU-NORD 1 22 00
CREUSE 1 23 00
"""
Nous allons initialiser un dictionnaire, ayant en clé le nom du département (par exemple), et les données numériques dans une liste correspondante à la valeur de la clé.
>>> d = {x.split('\t')[0]: x.split('\t')[1:] for x in s.split('\n')}
>>> pprint(d)
{'': [],
'AIN': ['1', '01', '00'],
'AISNE': ['1', '02', '00'],
'ALLIER': ['1', '03', '00'],
'ALPES(BASSES-)': ['1', '04', '00'],
'ALPES(HAUTES-)': ['1', '05', '00'],
'ALPES-MARITIMES': ['1', '06', '00'],
'ARDECHE': ['1', '07', '00'],
'ARDENNES': ['1', '08', '00'],
'ARIEGE': ['1', '09', '00'],
'AUBE': ['1', '10', '00'],
'AUDE': ['1', '11', '00'],
'AVEYRON': ['1', '12', '00'],
'BOUCHES-DU-RHONE': ['1', '13', '00'],
'CALVADOS': ['1', '14', '00'],
'CANTAL': ['1', '15', '00'],
'CHARENTE': ['1', '16', '00'],
'CHARENTE-INFERIEURE': ['1', '17', '00'],
'CHER': ['1', '18', '00'],
'CORREZE': ['1', '19', '00'],
'CORSE': ['1', '20', '00'],
"COTE-D'OR": ['1', '21', '00'],
'COTES-DU-NORD': ['1', '22', '00'],
'CREUSE': ['1', '23', '00']}
Par contre, notre dictionnaire contient une ligne vide (la première), nous allons donc en tenir compte lors de la création de notre dictionnaire.
>>> d = {x.split('\t')[0]: x.split('\t')[1:] for x in s.split('\n') if x.split('\t')[0] != ''}
>>> pprint(d)
{'AIN': ['1', '01', '00'],
'AISNE': ['1', '02', '00'],
'ALLIER': ['1', '03', '00'],
'ALPES(BASSES-)': ['1', '04', '00'],
'ALPES(HAUTES-)': ['1', '05', '00'],
'ALPES-MARITIMES': ['1', '06', '00'],
'ARDECHE': ['1', '07', '00'],
'ARDENNES': ['1', '08', '00'],
'ARIEGE': ['1', '09', '00'],
'AUBE': ['1', '10', '00'],
'AUDE': ['1', '11', '00'],
'AVEYRON': ['1', '12', '00'],
'BOUCHES-DU-RHONE': ['1', '13', '00'],
'CALVADOS': ['1', '14', '00'],
'CANTAL': ['1', '15', '00'],
'CHARENTE': ['1', '16', '00'],
'CHARENTE-INFERIEURE': ['1', '17', '00'],
'CHER': ['1', '18', '00'],
'CORREZE': ['1', '19', '00'],
'CORSE': ['1', '20', '00'],
"COTE-D'OR": ['1', '21', '00'],
'COTES-DU-NORD': ['1', '22', '00'],
'CREUSE': ['1', '23', '00']}
Et voilà, tout est nickel. Et tout ça à partir d'une simple chaine de texte.
Pour obtenir les données relatives au département de la Charente:
>>> d['CHARENTE']
['1', '16', '00']
Ajouter un commentaire