在2个列表中查找最接近的日期时间

时间:2017-12-12 10:42:01

标签: python python-2.7 sorting

我有2个列表(下面的示例,但真正的列表在每个列表中有100+):

ListA = [29/11/2017 03:44:42, 23/11/2017 07:36:35, etc....]
ListB = [12/09/2017 02:00:34, 12/05/2017 14:00:25, etc....]

我正在尝试遍历ListA中的每个元素,并找出ListB中哪个元素最接近该日期。我很难这样做。

我首先确保两个列表元素都是日期时间对象。

但在此之后,我一直陷入困境......我可能正在考虑这个错误。

for i in ListA:
    closestTimestamp = min(key, key=lambda datetime: abs(timestamp - [j for j in ListB]))

它说key没有定义。如果这是一个愚蠢的问题,我对Python很陌生。

1 个答案:

答案 0 :(得分:2)

您应该将可迭代的(例如ListB)和关键功能传递给min()。试试这个:

for a in ListA:
    closestTimestamp = min(listB, key=lambda b: abs(a-b))
BTW,此解决方案的时间复杂度为O(nm),对于较大的列表,这可能会很慢。在这种情况下,请考虑将binary search用于O(nlogm)复杂性。