python – 如何对链接的元组列表进行排序?

lst = [(u'course', u'session'), (u'instructor', u'session'), (u'session', u'trainee'), (u'person', u'trainee'), (u'person', u'instructor'), (u'course', u'instructor')]

我上面是元组列表,我需要用以下逻辑对它进行排序….
每个元组的第二个元素依赖于第一个元素,例如(课程,课程) – >会话取决于课程等等..

我想要一个基于其依赖的优先级的排序列表,较少或独立的对象将首先出现,因此输出应如下所示,

lst = [course, person, instructor, session, trainee]

解决方法:

你正在寻找所谓的topological sort.*页面显示了它的经典Kahn和深度优先搜索算法; Python示例是here(有点过时,但应该运行正常),在pypi(稳定且可重用 – 您还可以在线阅读代码here)和here(Tarjan的算法,这种类型也处理依赖项中的循环)指定),仅举几例.

上一篇:[java学习笔记]java语言核心----面向对象之static关键字


下一篇:jdk8新特性:在用Repository实体查询是总是提示要java.util.Optional, 原 Inferred type 'S' for type parameter 'S' is not within its bound;