Python:获取每个公司的最新日期

标签 python list list-comprehension

我有一个元组列表,其中包含日期和公司名称。一家公司可以列出多个日期的信息:

 [(Company A, datetime.date(1980,1,30)),
  (Company A, datetime.date(1990,1,30)),
  (Company B, datetime.date(1990,1,30)),
  (Company B, datetime.date(2000,1,30))]

我想做的是有一个列表,其中只包含每个公司的最新日期,即结果:

 [(Company A, datetime.date(1990,1,30)),
  (Company B, datetime.date(2000,1,30))]

有什么想法吗?

最佳答案

如何使用 itertools 中的 groupby,然后取最大值:

import datetime
x = [('Company A', datetime.date(1980,1,30)),
  ('Company A', datetime.date(1990,1,30)),
  ('Company B', datetime.date(1990,1,30)),
  ('Company B', datetime.date(2000,1,30))]

import itertools
out = []
for k,g in itertools.groupby(sorted(x, key = lambda y: y[0]), lambda y: y[0]):
    out.append(max(g, key = lambda y:y[1]))

out
[('Company A', datetime.date(1990, 1, 30)),
 ('Company B', datetime.date(2000, 1, 30))]

关于Python:获取每个公司的最新日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46607111/

相关文章:

java - 将Java类导入python项目

python - 如何使用python在列表列表中添加项目

Java程序将列表中给定数字的连续数字分组<list>

Haskell:无法理解瓶颈

python - 从列表内的字符串中删除所有非数字字符

python - 有没有办法从中创建列表理解?

python - callable(obj) 是否尝试调用?

python - 如何在不使用全局变量的情况下影响 python 生成器 : time example

python - python 中的文件输出给我垃圾

c++ - 列表中的 std::min_element 不返回最小值