Bonsoir,
Je viens vers vous car je bloque sur ce code Python. J’ai un dictionnaire de codes qui associe à une lettre une chaîne de caractères. J’ai ensuite une liste de dictionnaires décrivant un objet. Voici ce que ça donne :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | codes = { "Y": "Titre Y", "B": "Titre B", "A": "Titre A", "D": "Titre D" } parts = [ {"id": "A-004", "name": "Foo"}, {"id": "D-142", "name": "Foo"}, {"id": "B-044", "name": "Foo"}, {"id": "Y-002", "name": "Foo"}, {"id": "D-024", "name": "Foo"}, ] |
J’ai besoin d’en tirer le dictionnaire suivant :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | what_I_want = { "A": [ {"id": "A-004", "name": "Foo"}, ], "B": [ {"id": "B-044", "name": "Foo"}, ], "D": [ {"id": "D-024", "name": "Foo"}, {"id": "D-142", "name": "Foo"}, ], "Y": [ {"id": "Y-002", "name": "Foo"}, ] } |
La première condition est que chaque objet soit ajouté à la liste qui lui correspond. Si son id
commence par A
alors il va dans la liste de la clé A
. Celle-ci est assez simple. La deuxième, celle sur laquelle je bloque, est qu’il faut que chaque liste soit trié en fonction de l’id de ses objets. Par exemple l’objet portant l’id D-024
doit être avant l’objet portant l’id D-142
. Voici ce que j’ai fait pour la première condition :
1 2 3 4 5 6 7 8 9 | what_I_get = {} for code in codes: what_I_get[code] = [] for part in parts: if part["id"][0] == code: what_I_get[code].append(part) print(what_I_get) |
Ce qui fonctionne sans problème. Comment résoudre la deuxième solution ?
Merci pour votre aide et bonne soirée à vous !