从元组列表中获取最小唯一元组对

问题描述 投票:0回答:1

考虑以下元组列表:

transactions = [
    ('GBP.USD', '2022-04-29'),
    ('SNOW', '2022-04-26'),
    ('SHOP', '2022-04-21'),
    ('GBP.USD', '2022-04-27'),
    ('MSFT', '2022-04-11'),
    ('MSFT', '2022-04-21'),
    ('SHOP', '2022-04-25')
]

我可以得到具有最小日期的元组,如下所示:

min(transactions, key=lambda x: x[1])

这将返回一个元组:

('MSFT', '2022-04-11')

我需要返回任何重复项的最小日期以及所有唯一值。所以我的输出应该是这样的:

[
    ('SNOW', '2022-04-26'),
    ('SHOP', '2022-04-21'),
    ('GBP.USD', '2022-04-27'),
    ('MSFT', '2022-04-11'),
]

我该怎么做?

python tuples
1个回答
0
投票
for item in transactions:
    key, date = item
    if key not in min_dates or date < min_dates[key]:
        min_dates[key] = date
result = [(key, min_dates[key]) for key in min_dates]
result.sort(key=lambda x: x[1])

© www.soinside.com 2019 - 2024. All rights reserved.