Skip to main content
 首页 » 编程设计

python之按特定列表(边缘权重)对图进行元组排序

2025年05月04日16mengfanrong

我开发了一个如下所示的元组:

(['Austin', 'Austin', 'Houston', 'Dallas', 'Dallas', 'San Antonio'], ['San Antonio', 'El Paso', 'Austin', 'Austin', 'Houston', 'El Paso'], [1, 8, 3, 7, 3, 8]) 

每个城市名称都是一个标签,第三个列表中的数字代表顶点的边权重。我如何能够通过第三组对这个元组进行排序,从而允许根据权重对顶点进行排序。例如,

Austin--San Antonio 1 
Houston--Austin 3 
Dallas--Houston 3 
Dallas--Austin 7 
Austin--El Paso 8 
San Antonio--El Paso 8 

请您参考如下方法:

使用 zip和 sorted功能:

In [54]: srtd = sorted(zip(*t), key=lambda x: x[-1]) 
 
In [55]: srtd 
Out[55]:  
[('Austin', 'San Antonio', 1), 
 ('Houston', 'Austin', 3), 
 ('Dallas', 'Houston', 3), 
 ('Dallas', 'Austin', 7), 
 ('Austin', 'El Paso', 8), 
 ('San Antonio', 'El Paso', 8)] 

t 是您的元组。如果您需要将结果转换回元组:

In [56]: tuple(zip(*srtd)) 
Out[56]:  
(('Austin', 'Houston', 'Dallas', 'Dallas', 'Austin', 'San Antonio'), 
 ('San Antonio', 'Austin', 'Houston', 'Austin', 'El Paso', 'El Paso'), 
 (1, 3, 3, 7, 8, 8))