【发布时间】:2014-10-14 18:02:05
【问题描述】:
我一直在从事一项收集数据的任务,并计算每个事物从大约 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 号。 例如
- DE 922397 44
- DE 627084 40
- 西澳 1082225 29
最好的方法是什么?
**编辑 我是如何整理我的任务字典的
task1 = {}
for key,val in courses.items():
task1[key] = [sorted(courses[key].iteritems(), key=operator.itemgetter(1), reverse=True)[:5]]
【问题讨论】:
-
实际的字典是什么样的?您发布的内容不是有效的 Python 语法。
-
@cyber 这是我的 python 打印时输出的内容:for key,val in courses.items(): print key, task1[key]
-
task1[key] = [sorted(courses[key].iteritems(), key=operator.itemgetter(1), reverse=True)[:5]]周围有一对不必要的[]。这工作得很好:task1[key] = sorted(courses[key].iteritems(), key=operator.itemgetter(1), reverse=True)[:5]
标签: python list sorting dictionary