簡體   English   中英

鍵列表,如何在字典中查找最大值

[英]List of Keys, how to find max values in Dictionary

我一直在從事一項收集數據的作業,並計算大約500mb的大型數據集中每件事出現的次數。 我有幾個字典讀取csv文件並將數據放在一起,在收集並處理所有數據之后,我的最終字典看起來像這樣。

我幾乎完成了分配工作,但仍停留在本節中,我需要在所有鍵和值之間找到前5個最大值。

我有以下字典:

printed using: print key, task1[key]

KEY KEYVALUE

WA [[('1082225', 29), ('845195', 21), ('265021', 17)]]
DE [[('922397', 44), ('627084', 40), ('627297', 14)]]
DC [[('774648', 17), ('911624', 17), ('771241', 16)]]
WI [[('12618', 25), ('242582', 23), ('508727', 22)]]
WV [[('476050', 4), ('1016620', 3), ('769611', 3)]]
HI [[('466263', 5), ('226000', 5), ('13694', 4)]]

我非常需要檢查並找到前5個值及其ID號。 例如

  1. DE 922397 44
  2. DE 627084 40
  3. 西澳1082225 29

最好的方法是什么?

**編輯我如何整理我的任務字典

task1 = {}
for key,val in courses.items():
    task1[key] = [sorted(courses[key].iteritems(), key=operator.itemgetter(1), reverse=True)[:5]]

假設您的dict看起來像:

mydict = {'WA': [('1082225', 29), ('845195', 21), ('265021', 17)], 'DE': [('922397', 44), ('627084', 40), ('627297', 14)], ...}

這不是理想的表示。 如果運行此命令,則可以將列表展平為更好的格式:

data = [(k, idnum, v) for k, kvlist in mydict.items() for idnum, v in kvlist]

現在數據看起來像:

[('WA', '1082225', 29), ('WA', '845195', 21), ('WA', '265021', 17), ('DE', '922397', 44), ...]

以這種格式,數據清晰可讀,很顯然我們需要搜索什么。 此行將根據新元組的[2]值以降序對它們進行排序:

sorted(data, key=lambda x: x[2], reverse=True)

注意:您提供的字典沒有必要的[] ,因此為了清楚起見,我從答案中刪除了該字典。

澄清后編輯。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM