簡體   English   中英

如何從元組列表中獲取最新日期?

[英]How to get the latest date from a list of tuples?

我有一個看起來像這樣的列表:

[(0, '2015-10-08'), (1, '2020-11-17'), (2, '2006-09-14'),....]

我想返回日期最晚的那個,我怎樣才能做到這一點?

我試過:

a= [(0, '2015-10-08'), (1, '2020-11-17'), (2, '2006-09-14')]
print(max(a))

但這返回(2, '2006-09-14') ,我很困惑,這是為什么? 謝謝。

嘗試這個:

print(max(a, key=lambda x: datetime.datetime.strptime(x[1], '%Y-%m-%d')))

您可以使用帶有 key 參數的 max() 函數來根據函數獲取最大元素。

默認的 max 函數作用於元組的第一個元素。 您可以通過max(a, key=lambda x: x[1])將其設置為第二個元素

比較元組時,默認行為是比較它們的第一個元素,如果有平局,則比較第二個元素,依此類推。 因此,當您調用max([(0, '2015-10-08'), (1, '2020-11-17'), (2, '2006-09-14')]) ,您會得到(2, '2006-09-14')因為它有最大的第一個元素。

您需要將自定義函數傳遞給內置max函數的key參數,以便在日期上進行比較:

>>> from datetime import datetime
>>> arr = [(0, '2015-10-08'), (1, '2020-11-17'), (2, '2006-09-14')]
>>> max(arr, key=lambda item: datetime.strptime(item[1], "%Y-%m-%d"))
(1, '2020-11-17')

當您使用max(a)它返回元組中最大的第一個元素,即 2。因此, max(a) = (2, '2006-09-14')我建議您使用以下代碼:

import numpy as np
list_dates=[]
for i in np.arange(len(a)):
    list_dates.append(a[i][1])
max(list_dates)

它返回

'2020-11-17'

在您使用max函數的代碼中,它比較每個元組的第一個元素並給出結果。

我希望下面的代碼示例能夠滿足您的用例 -

a= [(0, '2015-10-08'), (1, '2020-11-17'), (2, '2006-09-14')]
n=len(a)
max_date=a[0][1]
for i in range(1,n):
    date=a[i][1]
    if(max_date < date):
        max_date=date
print(max_date)

max(a)是查看第零個元素並找到最大值,即 2。您只想查看帶有日期的元素,因此您需要a[[i[1] for i in a].index(max([i[1] for i in a]))]

這可能看起來有點混亂,因為它都在一行上。

本質上它的作用是這樣的:

您想制作一個僅包含日期元素的列表b b = [i[1] for i in a]

然后找到該列表的最大值的索引。 max_index = b.index(max([i[1] for i in a])) ,這返回'1',所以我們知道它是位置1的元素。

最后,您需要獲取a[1] ,即位置 1 處的 a 元素。

所以總的來說它是a[[i[1] for i in a].index(max([i[1] for i in a]))] 🦄

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM