我有一个元组列表,其中包含日期和公司名称。一家公司可以列出多个日期的信息:
[(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/