我正在尝试从列表字典中返回所有最大值。
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'。如何修改它以返回两个键?
答案 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]