#python #dictionary
Вопрос:
У меня есть список словарей, и я хотел бы разделить словари на основе значения ключа "timestamp"
. Идея состоит в том, чтобы сгруппировать словари 1-го семестра (с января по июль) и словари 2-го семестра (с августа по декабрь). Как я могу сделать это эффективным с точки зрения производительности способом?
Это мой код:
group1 = ['2020-01', '2020-02', '2020-03', '2020-04', '2020-05', '2020-06']
data = [
{
'timestamp': '2020-01-01T00:00:00Z',
'price': 7204.54,
'volume_24h': 13086960135,
'market_cap': 130644686531},
{
'timestamp': '2020-01-01T01:00:00Z',
'price': 7218.55,
'volume_24h': 13133228186,
'market_cap': 130899528700},
{
'timestamp': '2020-01-01T02:00:00Z',
'price': 7241.8,
'volume_24h': 13257849556,
'market_cap': 131321418482
}
]
semester_1 = [i for i in data if group1 in i['timestamp']]
К сожалению, он выдает ошибку, потому group1
что это список.
Комментарии:
1. пробовать
i['timestamp'] in group1
2. Конечно, вам придется выбрать правильную часть строки
Ответ №1:
Вы можете попытаться проверить, находится ли подстрока метки времени, включающая эту дату, в группе списка 1:
group1 = [f'2020-0{i}' for i in range(1,7)]
data = [{'timestamp': '2020-01-01T00:00:00Z',
'price': 7204.54,
'volume_24h': 13086960135,
'market_cap': 130644686531},
{'timestamp': '2020-01-01T01:00:00Z',
'price': 7218.55,
'volume_24h': 13133228186,
'market_cap': 130899528700},
{'timestamp': '2020-01-01T02:00:00Z',
'price': 7241.8,
'volume_24h': 13257849556,
'market_cap': 131321418482}]
semester_1 = [item for item in data if item['timestamp'][:7] in group1]
Ответ №2:
Попробуй:
semester_1 = [i for i in data if i['timestamp'][0:7] in group1]
Или даже без определения group1
:
semester_1 = [i for i in data if int(i['timestamp'][5:7]) < 7]