-1
假設我有一個具有屬性from_id
的對象的列表lst1
。另外,我還有另一個具有屬性to_id
的對象的列表lst2
。在兩個列表中查找對應關係的最快方法Python
我需要爲lst1
中的每個對象找到它的「對」lst2
(from_id
應該等於to_id
)。
lst2
中最多隻能有一個對象(零個或一個),對應於lst1
中的給定對象。
什麼是在Python中實現它的最快方法?
假設我有一個具有屬性from_id
的對象的列表lst1
。另外,我還有另一個具有屬性to_id
的對象的列表lst2
。在兩個列表中查找對應關係的最快方法Python
我需要爲lst1
中的每個對象找到它的「對」lst2
(from_id
應該等於to_id
)。
lst2
中最多隻能有一個對象(零個或一個),對應於lst1
中的給定對象。
什麼是在Python中實現它的最快方法?
使用套;因爲它像一個沒有鍵的字典(只是值)。首先將您的列表轉換爲集合。
lst1 = set(lst1)
lst2 = set(lst2)
res = [(obj, to_obj) for obj in lst1 for to_obj in lst2 if obj.from_id == to_obj.to_id]
這可以被打破
result = []
for obj in lst1:
for to_obj in lst2:
if obj.from_id == to_obj.to_id:
result.append((obj, to_obj))
break
這將元組的列表結束。 較長的版本會破壞找到該對象的內容,但理解代碼不會。
內部循環,但它給出O(n^2)並且當列表超過100個項目時非常緩慢。 –
這取決於你的對象。但是,最有可能的是NumPy會有所幫助。例如,這裏是[鏈接](https://stackoverflow.com/questions/5534500/whats-the-fastest-way-to-compare-two-large-lists-of-1s-0s-and-return-在二) – Alperen