【问题标题】:List of Keys, how to find max values in Dictionary键列表,如何在字典中查找最大值
【发布时间】: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 号。 例如

  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]]

【问题讨论】:

  • 实际的字典是什么样的?您发布的内容不是有效的 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


【解决方案1】:

假设您的 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)

注意:您提供的字典有一个不必要的[],所以为了清楚起见,我从答案中删除了它。

澄清后编辑。

【讨论】:

  • 如果最大值不在列表的第一个元组中,它也会失败
  • @Smac89 正在生成列表反向排序
  • 澄清后,我修改了上面的答案。
  • @cmd 哦,我没有看到更新的帖子。所以看起来 OP 已经在对每个列表进行反向排序
猜你喜欢
  • 2014-10-06
  • 1970-01-01
  • 1970-01-01
  • 2011-07-16
  • 2015-08-05
  • 2015-07-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多