我有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表示歉意。 最佳答案
您应该将一个可迭代的字符(例如ListB
)和一个键函数传递给min()
。尝试这个:
for a in ListA:
closestTimestamp = min(listB, key=lambda b: abs(a-b))
顺便说一句,此解决方案的时间复杂度为
O(nm)
,对于较大的列表而言可能较慢。在那种情况下,考虑将binary search用于O(nlogm)
复杂度。