python 字典比較
問題描述
一個(gè)列表當(dāng)中有一個(gè)日期的值,我想求這個(gè)日期里面當(dāng)天最大時(shí)間的那一條,大神們?nèi)绾螌懩兀吭剂斜韅
[{ 'count': 0, 'create_time': '2017-03-22 22:00:00', 'level': '1' }, { 'count': 5, 'create_time': '2017-03-22 22:00:00', 'level': '0' }, { 'count': 5, 'create_time': '2017-03-22 22:00:00', 'level': '2' }, { 'count': 5, 'create_time': '2017-03-22 23:00:00', 'level': '0' }, { 'count': 0, 'create_time': '2017-03-22 23:00:00', 'level': '1' }, { 'count': 5, 'create_time': '2017-03-22 23:00:00', 'level': '2' }]`
想要輸出的列表
[{'count': 5,'create_time': '2017-03-22 23:00:00','level': '0' }, {'count': 0,'create_time': '2017-03-22 23:00:00','level': '1' }, {'count': 5,'create_time': '2017-03-22 23:00:00','level': '2' }]
問題解答
回答1:在上次問的問題里改sum成max:
from collections import defaultdictgrouped = defaultdict(list)for d in s: grouped[(d[’create_time’].split()[0], d[’level’])].append((d[’create_time’], d[’count’]))summed = {k : max(grouped[k]) for k in grouped}s = [{’count’: summed[k][1], ’create_time’: summed[k][0], ’level’: k[1]} for k in summed]回答2:
像這類問題都可以用groupby來解決
# coding: utf-8from itertools import groupbydata = [...]fun_group = lambda x: x[’level’]fun_max = lambda x: x[’create_time’]lst = [max(list(g), key=fun_max) for k, g in groupby(sorted(data, key=fun_group), fun_group)]print lst回答3:
思路就是先排序,再過濾
ls = [{ 'count': 0, 'create_time': '2017-03-22 22:00:00', 'level': '1' }, { 'count': 5, 'create_time': '2017-03-22 22:00:00', 'level': '0' }, { 'count': 5, 'create_time': '2017-03-22 22:00:00', 'level': '2' }, { 'count': 5, 'create_time': '2017-03-22 23:00:00', 'level': '0' }, { 'count': 0, 'create_time': '2017-03-22 23:00:00', 'level': '1' }, { 'count': 5, 'create_time': '2017-03-22 23:00:00', 'level': '2' }]import timels.sort(key = lambda x: time.strptime(x['create_time'], '%Y-%m-%d %H:%M:%S'))ret = filter(lambda x: x[’create_time’] == ls[-1][’create_time’], ls)print ret'''[{’count’: 5, ’create_time’: ’2017-03-22 23:00:00’, ’level’: ’0’}, {’count’: 0, ’create_time’: ’2017-03-22 23:00:00’, ’level’: ’1’}, {’count’: 5, ’create_time’: ’2017-03-22 23:00:00’, ’level’: ’2’}]'''
相關(guān)文章:
1. Docker for Mac 創(chuàng)建的dnsmasq容器連不上/不工作的問題2. javascript - 求賜教:網(wǎng)易郵箱Web端模擬登錄看信的加密參數(shù)_ntes_nnid、_ntes_nuid3. javascript - 使用angular 的ui-sref 中出現(xiàn)了中文參數(shù),點(diǎn)擊跳轉(zhuǎn)后瀏覽器的地址欄里出現(xiàn)轉(zhuǎn)義后的%AE....%a%44. java - ConcurrentHashMap中的get()方法為什么可以不加鎖?5. javascript - QWebEngineView 如何爬 angular 的動(dòng)態(tài)數(shù)據(jù)?6. html5 - 這個(gè)代碼顯示功能如何實(shí)現(xiàn)?7. javascript - 用JS 七牛上傳圖片出現(xiàn)文件已存在的錯(cuò)誤(file exists)8. 工作近5年,3年Java Web ,近2年前端,未來何去何從?9. css3 - 圖片等比例縮放10. java - 字節(jié)流轉(zhuǎn)成字符串之后,在通過字符串轉(zhuǎn)成字節(jié)流后的文件為什么會(huì)不一樣?
