我有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很陌生。
答案 0 :(得分:2)
您应该将可迭代的(例如ListB
)和关键功能传递给min()
。试试这个:
for a in ListA:
closestTimestamp = min(listB, key=lambda b: abs(a-b))
BTW,此解决方案的时间复杂度为O(nm)
,对于较大的列表,这可能会很慢。在这种情况下,请考虑将binary search用于O(nlogm)
复杂性。