编程语言
首页 > 编程语言> > python – 如何对链接的元组列表进行排序?

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的算法,这种类型也处理依赖项中的循环)指定),仅举几例.

标签:python,sorting,list,tuples,topological-sort
来源: https://codeday.me/bug/20190724/1518386.html