python - 从 python 列表中选择最高值

标签 python list numpy

在字典列表中:

 A = [
       [{'x': 1, 'y': 0}, {'x': 2, 'y': 3}, {'x': 3, 'y': 4}, {'x': 4, 'y': 7}],

       [{'x': 1, 'y': 0}, {'x': 2, 'y': 2}, {'x': 3, 'y': 13}, {'x': 4, 'y': 0}],

       [{'x': 1, 'y': 20}, {'x': 2, 'y': 4}, {'x': 3, 'y': 0}, {'x': 4, 'y': 8}]

     ]

我需要从每个字典列表中检索最高的“y”值...因此结果列表将包含:

 Z = [(4, 7), (3,13), (1,20)]

在 A 中,'x' 是每个字典的键,而 'y' 是每个字典的值。

有什么想法吗?谢谢。

最佳答案

max 接受可选的 key 参数。

A = [
    [{'x': 1, 'y': 0}, {'x': 2, 'y': 3}, {'x': 3, 'y': 4}, {'x': 4, 'y': 7}],
    [{'x': 1, 'y': 0}, {'x': 2, 'y': 2}, {'x': 3, 'y': 13}, {'x': 4, 'y': 0}],
    [{'x': 1, 'y': 20}, {'x': 2, 'y': 4}, {'x': 3, 'y': 0}, {'x': 4, 'y': 8}]
]

Z = []
for a in A:
    d = max(a, key=lambda d: d['y'])
    Z.append((d['x'], d['y']))
print Z

更新

由 J.F. Sebastian 建议:

from operator import itemgetter
Z = [itemgetter(*'xy')(max(lst, key=itemgetter('y'))) for lst in A]

关于python - 从 python 列表中选择最高值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17227045/

相关文章:

python - print 语句如何创建局部变量

python - 无需Windows专用工具即可向现有xlsx添加密码(无人值守)

python - 我们如何在 python 中读取 16 个无符号整数 (16 uint) jpeg 文件

python - 将特定字符串放置在特定索引处

Python-局部变量保留重复调用函数的内容

r - 使用 tidyverse 将嵌套列表添加到数据框

python - 比较两个列表(python)

python - 有多个条件时替换numpy数组中的元素

python - 函数调用和函数中的代码给出不同的结果

python - 确定数组是否已排序的最快方法是什么?