亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁技術文章
文章詳情頁

python - 如何利用元組中某個數據或字典中某組key,對一個序列的數據進行排序?

瀏覽:90日期:2022-06-29 15:57:33

問題描述

假設通過對海量的原始數據后分析得到這樣的數據:

[(id,node,val)(id,node,val)...]就是依次為 用戶id,所在服務器,數值 這樣的元組,然后要根據服務器分開,再依靠val大小進行排序,然后寫入excel中。或者產生[{'id':xxx,'node':xxx,'val':xxx},{'id':xxx,'node':xxx,'val':xxx}...]如果是只有一組kv,可以通過sorted的方式進行排序,但是現在node的名稱是未知的,這些服務器名每天都可以能會發生變化。當我獲取到這樣的數據后,如何根據服務器名稱分開,再排序數據呢?這里主要卡在,node本身的名稱并不是固定的,比如你先創建n個列表,把相同節點的數據放進去,但你不知道要創建多少個列表。而且之后在將處理后的數據寫入excel時,勢必要用到循環。這樣循環套循環,而且無論是數據分類后,還是排布后的新數據組名稱都不是確定的。即便使用exec命令也無法滿足需要啊

問題解答

回答1:

from collections import defaultdictd = defaultdict(list)data = [(id,node,val),(id,node,val)...]# 按node進行分組for x in data: d[x[1]].append(x) # 將分組數據依次寫入excelfor _, v in d.iteritems(): # 排序 tmp = sorted(v, key=lambda x: x['val'], reverse=True/False) # 寫入excel write_to_excel(tmp)

另外其實可以將數據按id, node, val 全部寫入csv文件通過linux的awk, uniq, sort 等命令工具寫一個shell腳本, 也是很快的

還有關于你的海量數據究竟有多大, 在哪個數量級,沒有明確, 如果數據量真的很大, 用上面的python代碼內存不夠用也是可能的, 這個需要你自己估算下

回答2:

如果我正確理解了你的需求的話,可以用字典,字典的鍵是node的名稱,字典的值是由項組成的列表:

data = [{'id':xxx,'node':xxx,'val':xxx},{'id':xxx,'node':xxx,'val':xxx}...]result = {}for data_item in data: node_name = data_item['node'] if node_name in result.keys():result[node_name].append(data_item) else:result[node_name] = [data_item]

之后再根據鍵(服務器名稱)取出字典中的每一項的值(就是數據列表),對其sort加lambda根據每一項中的某個值進行排序。

標簽: Python 編程
主站蜘蛛池模板: 男女自偷自拍视频免费观看篇 | 黄色免费大全 | 成人国产精品高清在线观看 | 天海翼一区二区三区高清视频 | 日韩在线免费播放 | 国产精品国产亚洲精品看不卡 | 国产精品国偷自产在线 | 中文一级黄色片 | 成人国产网站v片免费观看 成人国产视频在线观看 | 图片专区亚洲色图 | 中文字幕不卡一区 二区三区 | 在线综合视频 | 久久久久久91精品色婷婷 | 狼色视频在线观看 | 欧美日韩综合在线视频免费看 | 国产精选在线播放 | 91中文在线| 免费福利视频在线观看 | 亚洲国产精品第一区二区 | jizzjiz熟丰满老妇日本 | 国产一级毛片亚洲久留木玲 | 国产美女一区二区在线观看 | 香蕉久操 | 亚洲国产精品自在在线观看 | 伊人久久大香线焦综合四虎 | 国内主播大秀福利视频在线看 | 日韩高清在线免费观看 | 91视频网页版 | 色视频一区二区三区 | 亚洲国产精品久久精品成人 | 9久热久re爱免费精品视频 | 456成人| 色婷婷亚洲十月十月色天 | 能看的黄色网址 | 国产一级在线现免费观看 | 香蕉亚洲 | 久久久精品一区 | 色屁屁www影院免费观看入口 | 日本不卡在线视频高清免费 | 精品一区二区三区视频在线观看免 | 亚洲精品一线观看 |