![](/img/trans.png)
[英]What's the best possible way to do this kind of dict matching in python?
[英]What's the best way to do this in Python?
我有一個對象列表,其中每個對象都有start
和end
屬性,例如:
Item 0:
Start: 1
End: 12
Item 1:
Start: 6
End: 3
Item 2:
Start: 12
End: 6
我想對它們進行排序,以使每個項目的start
和end
與新列表中之前和之后的內容匹配。
因此,在此示例中,它將是:
[Item 0] [Item 2] [Item 1]
[1 12] [12 6] [6 3]
整個列表是否顛倒都沒關系。
另外,還有2個不相關的列表(如上述)混在一起,所以我必須形成2個具有正確順序的新列表,如上所示。
我將開始以“蠻力”方式實現它,因此要進行大量查詢來創建這些列表,但我想問一問是否有人可以采用更優雅的方式來解決此問題。 我不確定這種問題有多普遍,但我記得以前曾見過,所以也許有一些模式可以解決這個問題。
假設每個起點和終點都有一個完美的起點/終點匹配:
items_by_start = dict((i.start, i) for i in your_items)
ordered_items = [your_items[0]]
for _ in xrange(len(your_items)-1):
ordered_items.append(items_by_start[ordered_items[-1].end])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.