【问题标题】:Find the max value of subset of a list?找到列表子集的最大值?
【发布时间】:2017-01-04 15:47:37
【问题描述】:

我有一个 Python 数据解析脚本,它将数据收集到一个元组列表中。元组的第一个元素是引用一组相关数据的“索引”。我想为每个数据集“索引”找到元组中第二个元素的最大值。

数据如下:

[[1, 99, '43.12', '-76,21'], [1, 98, ''43.13', '-76.22'], etc. ]

元组中的第一个元素是“索引”值。所以以后它会增加。

[2, 52, '42.99', '-75.95']

所以我想在每个“索引”值中找到第二个元素的最大值。我想按需提取该值,而不是创建结果列表,即为数据集 8 找到元素 2 的最大值。

我已经搜索了很多以找到答案,但似乎没有一个足够接近。我发现的大多数问题都没有显示如何显式选择元素值,并且大多数问题都创建了结果列表。

【问题讨论】:

  • 我认为“元组”是指“列表”;至少,如果您使用方括号创建对象,就会产生这样的结果。
  • max 有一个可选参数key
  • 另外,如果第一个数字是“索引”,为什么在您的数据集中有两个索引为 1 的列表?
  • 欢迎来到Stack Overflow!您可能知道,Stack Overflow 是一个问答网站。读者,比如你自己,提出问题,其他读者尝试回答。您的帖子缺少Stack Overflow 帖子质量的基本要素:一个问题!您的问题究竟是什么?

标签: python list python-3.x tuples subset


【解决方案1】:

这个函数可能会返回你想要的值:

def my_max(data, index):
    return max(datum[1] for datum in data if datum[0] == index)

演示:

def my_max(data, index):
    return max(datum[1] for datum in data if datum[0] == index)

my_list = [
    [1, 99, '43.12', '-76,21'],
    [1, 98, '43.13', '-76.22'],
    [2, 52, '42.99', '-75.95'],
]

assert my_max(my_list, 1) == 99
assert my_max(my_list, 2) == 52

【讨论】:

  • 啊!我想这就是我要找的!我试试看!
  • 它就像一个魅力!我投了赞成票,但由于我目前的代表,它没有显示出来。 (刚开始使用 stackoverflow。)感谢您的帮助!
猜你喜欢
  • 1970-01-01
  • 2018-03-08
  • 2023-01-02
  • 2012-02-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-08-04
相关资源
最近更新 更多