请考虑以下元组列表:

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'),
]

我怎么能这样做呢?

推荐答案

解决方案1:

min_dates = {}
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])

enter image description here

解决方案2:

from itertools import groupby
# Sort transactions by key and then by date
sorted_transactions = sorted(transactions)

# Group transactions by key
grouped_transactions = groupby(sorted_transactions, key=lambda x: x[0])

# Construct final list of tuples with the minimum date for each key
result = [(key, min(group, key=lambda x: x[1])[1]) for key, group in grouped_transactions]

#print(result)
# Prints : [('GBP.USD', '2022-04-27'), ('MSFT', '2022-04-11'), ('SHOP', '2022-04-21'), ('SNOW', '2022-04-26')]

Python相关问答推荐

如何推迟对没有公钥的视图/表的反射?

使用decorator 自动继承父类

情节生成的饼图文本超出页面边界

Python中的锁定类和线程以实现dict移动

了解shuffle在NP.random.Generator.choice()中的作用

无法导入已安装的模块

无法使用python.h文件; Python嵌入错误

Locust请求中的Python和参数

DataFrame groupby函数从列返回数组而不是值

rame中不兼容的d类型

带条件计算最小值

数据抓取失败:寻求帮助

如何使用pytest来查看Python中是否存在class attribution属性?

连接一个rabrame和另一个1d rabrame不是问题,但当使用[...]'运算符会产生不同的结果

如何在图中标记平均点?

使用Python和文件进行模糊输出

使用Python查找、替换和调整PDF中的图像'

如何找出Pandas 图中的连续空值(NaN)?

ruamel.yaml dump:如何阻止map标量值被移动到一个新的缩进行?

交替字符串位置的正则表达式