查找列表字典的多个最大值

时间:2017-03-31 17:17:29

标签: python list dictionary max

我正在尝试从列表字典中返回所有最大值。

my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}

maxima = max(my_dict.items(), key=operator.itemgetter(1))[0]

这只返回'122',而不是'111'和'122'。如何修改它以返回两个键?

2 个答案:

答案 0 :(得分:1)

我想也许这就是你想要的?这也跟踪my_dict中每个键的最大值。

ggplot(df, aes(x=metric, y=cnt) +
  geom_point() +
  scale_y_log10()

答案 1 :(得分:0)

根据您可以执行的列表中的最大项目对列表进行排序:

print(sorted(my_dict.keys(),key=lambda x: max(my_dict[x])))

您获得了[144, 133, 122, 111],但这并不能告诉您哪些密钥在其关联列表中具有最高价值。

所以你必须分两步执行:

  • 计算列表中所有值的最大值
  • 提取与包含此值的列表匹配的键

就像这样:

my_dict = { 111: [50, 2, 34], 122: [50 , 4, 45], 133: [40, 1, 12], 144: [20, 5, 7]}

max_value = max(x for l in my_dict.values() for x in l) # flat max of values

或者如果你想计算给定位置的特定值的最大值,例如第一个:

max_value = max(l[0] for l in my_dict.values()) 

然后从带有过滤器的dict中提取:

print([k for k,v in my_dict.items() if max_value in v]) # keys whose value contain the max

结果:

[122, 111]