Уведомления

Группа в Telegram: @pythonsu

#1 Июль 9, 2019 17:35:59

habrman
Зарегистрирован: 2019-07-01
Сообщения: 28
Репутация: +  0  -
Профиль   Отправить e-mail  

эмуляция sql запроса

есть список словарей

 [{
'name':name1
'date':''2019-07-07 15:22'
},
{
'name':name2
'date':''2019-07-07 15:23'
}]
я хочу посчитать уникальные имена например за последние 5 минут
в sql делается так
 select count(distinct name) from t where date> date_sub(now(), interval 5 minute)
как в питоне это реализовать?
ну кроме варианта с прямым перебором элементов

Отредактировано habrman (Июль 9, 2019 17:39:30)

Офлайн

#2 Июль 9, 2019 17:54:18

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

эмуляция sql запроса

попробуйте pandas



Офлайн

#3 Июль 9, 2019 20:56:14

doza_and
От:
Зарегистрирован: 2010-08-15
Сообщения: 4138
Репутация: +  253  -
Профиль   Отправить e-mail  

эмуляция sql запроса

 t=[{
'name':"name1",
'date':3.14
},
{
'name':"name2",
'date':3.15
},
{
'name':"name3",
'date':3.16
},
]
print(len(set([i["name"] for i in t if i["date"]>=3.15])))
>>> 2
Если вы хотите работать с временем и хранить надо время а не строки. Я передалал во float для простоты.
habrman
ну кроме варианта с прямым перебором элементов
И то что я привел, и то что вы привели это и есть прямой перебор.

Если вы желаете избежать простого перебора то можно создать индекс.
В питоне можете создать его например при помощи
http://www.grantjenks.com/docs/sortedcontainers/



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version