久久r热视频,国产午夜精品一区二区三区视频,亚洲精品自拍偷拍,欧美日韩精品二区

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

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

瀏覽:114日期: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 編程
主站蜘蛛池模板: 宿迁市| 乡宁县| 金乡县| 潍坊市| 安顺市| 天峻县| 东安县| 保山市| 威海市| 阳西县| 江都市| 新宾| 河池市| 交口县| 大余县| 葫芦岛市| 林周县| 乾安县| 蒙城县| 韶关市| 易门县| 都江堰市| 汾西县| 宁安市| 安乡县| 仪陇县| 陕西省| 观塘区| 同心县| 澄城县| 平昌县| 宜春市| 盘锦市| 静乐县| 万全县| 三穗县| 河池市| 涞源县| 共和县| 东平县| 黄龙县|