Python: classifique os dicionários aninhados com data e hora como chave [duplicado]
Oct 26 2020
Eu tenho uma lista de dicionários (de dicionários), cada entrada tem um objeto datetime como chave. Como posso classificar isso em termos de chaves?
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'}}]
Eu estou atrás disso:
[{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'}}]
Respostas
3 AndrejKesely Oct 26 2020 at 22:53
Se cada dicionário tiver apenas uma chave:
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)
Impressões:
[{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'}}]
O que significa um erro “Não é possível encontrar o símbolo” ou “Não é possível resolver o símbolo”?
George Harrison ficou chateado por suas letras de 'Hurdy Gurdy Man' de Donovan não terem sido usadas