[英]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.