国产成人精品久久免费动漫-国产成人精品天堂-国产成人精品区在线观看-国产成人精品日本-a级毛片无码免费真人-a级毛片毛片免费观看久潮喷

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

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

瀏覽:98日期: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 編程
主站蜘蛛池模板: 黄色在线不卡 | 国产成人艳妇在线观看 | 成人深夜福利在线播放不卡 | 天堂1在线观看 | 欧美日韩一区二区在线观看视频 | jyzzjyzz国产免费观看 | 国产精品亚洲一区二区三区在线观看 | 久久综合九色综合欧洲色 | 99视频在线免费看 | 久久草在线免费 | 久久久久久久久毛片精品 | 亚洲情乱| 九九九九热精品视频 | 男人透女人超爽视频免费 | 国产精品爱久久久久久久三级 | 一级做性色a爰片久久毛片免费 | 国产亚洲一路线二路线高质量 | 黄色天堂 | 国产三级a| 亚洲视频在线观看免费 | 精品伊人久久久久7777人 | 日本三级久久 | 日本一区二区不卡视频 | 狠狠色丁香久久婷婷综合_中 | 欧美日韩精品一区二区三区 | 中文无线乱码二三四区 | 国产午夜久久影院 | 影音先锋色先锋女同另类 | 欧美做爰免费大片在线观看 | 久久亚洲综合中文字幕 | 长腿美女被啪的欲仙欲死视频 | 国产美女作爱全过程免费视频 | 女人国产香蕉久久精品 | 国产三区视频在线观看 | 久久精品在现线观看免费15 | 国产91精品一区 | 国产免费久久精品久久久 | 久久久久久久久久久久久久久久久久 | 欧美日a | 国产精品变态重口在线 | 自拍视频在线 |