Python 对数组中的值对重新排序,使它们按顺序排列

Python 对数组中的值对重新排序,使它们按顺序排列,python,c,sorting,Python,C,Sorting,我正在尝试构建一个解决方案,以正确地排列值对数组,从而使它们以正确的顺序结束。在Python中考虑这个例子: theArray = [['Dempster St','Main St'],['Dempster St','Church St'],['Emerson St','Church St']] 我需要对阵列进行排序,以便最终看起来像这样: theArray = [['Emerson St','Church St'],['Church St','Dempster St'],['Dempster

我正在尝试构建一个解决方案,以正确地排列值对数组,从而使它们以正确的顺序结束。在Python中考虑这个例子:

theArray = [['Dempster St','Main St'],['Dempster St','Church St'],['Emerson St','Church St']]
我需要对阵列进行排序,以便最终看起来像这样:

theArray = [['Emerson St','Church St'],['Church St','Dempster St'],['Dempster St','Main St']]
一些考虑:

  • 不能保证每对中的顺序指向同一方向。例如:在上面的示例中,第二个数组元素的对顺序与其余元素的对顺序相反(Dempster到Church,而不是Church到Dempster)

  • 代码的构建应该使其能够在Python和C中使用,因此理想情况下,应该在不使用任何特定于语言的技巧的情况下完成

  • 最后,构建最终数组的顺序无关紧要,只要元素遵循正确的顺序。例如,下面的解决方案也会起作用:

    theArray=['Main St'、'Dempster St']、['Dempster St'、'Church St']、['Church St'、'Emerson St']


想法?

我设法让它发挥作用。我通过使用多个嵌套循环来迭代每对中的每个元素,以便检查它们的唯一性(为了做到这一点,每当一个项目被多次找到时,我就会增加一个相关变量,比如refcount);最后,计数最低的两个元素是路由的开始和结束。从那里很容易找到剩余的连接。

一如既往,您尝试了什么?我尝试了一个带有两个计数器的嵌套循环。但是,即使我能够连接一些元素对,我也无法全部获得它们,因为其中一些元素的顺序正好相反。@wotaskd显示嵌套循环的代码;使用图形算法为自己找到一条路径。我们可以假设每条街道最多被提及两次(两条正好一次),还是需要一个更一般的解决方案@Martijn Pieters似乎一个无向图也适用于他(我认为)