Python: trier les dictionnaires imbriqués avec datetime comme clé [dupliquer]
Oct 26 2020
J'ai une liste de dictionnaires (de dictionnaires), chaque entrée a un objet datetime comme clé. Comment puis-je trier cela en termes de clés?
from datetime import datetime
buffer = [{datetime(2020, 5, 3, 9, 42, 00): {'data': 46, 'id': 'john'}},
{datetime(2020, 5, 3, 9, 54, 00): {'data': 48, 'id': 'george'}},
{datetime(2020, 5, 3, 9, 36, 00): {'data': 49, 'id': 'paul'}},
{datetime(2020, 5, 3, 9, 24, 00): {'data': 51, 'id': 'ringo'}}]
Je suis après ça:
[{datetime(2020, 5, 3, 9, 24, 00): {'data': 51, 'id': 'ringo'}},
{datetime(2020, 5, 3, 9, 36, 00): {'data': 49, 'id': 'paul'}},
{datetime(2020, 5, 3, 9, 42, 00): {'data': 46, 'id': 'john'}},
{datetime(2020, 5, 3, 9, 54, 00): {'data': 48, 'id': 'george'}}]
Réponses
3 AndrejKesely Oct 26 2020 at 22:53
Si chaque dictionnaire n'a qu'une seule clé:
from pprint import pprint
from datetime import datetime
buffer = [{datetime(2020, 5, 3, 9, 42, 00): {'data': 46, 'id': 'john'}},
{datetime(2020, 5, 3, 9, 54, 00): {'data': 48, 'id': 'george'}},
{datetime(2020, 5, 3, 9, 36, 00): {'data': 49, 'id': 'paul'}},
{datetime(2020, 5, 3, 9, 24, 00): {'data': 51, 'id': 'ringo'}}]
out = sorted(buffer, key=lambda k: list(k)[0])
pprint(out)
Impressions:
[{datetime.datetime(2020, 5, 3, 9, 24): {'data': 51, 'id': 'ringo'}},
{datetime.datetime(2020, 5, 3, 9, 36): {'data': 49, 'id': 'paul'}},
{datetime.datetime(2020, 5, 3, 9, 42): {'data': 46, 'id': 'john'}},
{datetime.datetime(2020, 5, 3, 9, 54): {'data': 48, 'id': 'george'}}]