在第一个元素的字符串末尾按数字后缀排序列表

时间:2013-06-14 14:07:50

标签: python list sorting

我有一个像这样的列表列表:

table_data = [['vlan1', '0013.F200.0058', '192.168.2.2'], 
              ['vlan100', '0013.F200.0058', '192.168.110.2'], 
              ['vlan50', '0013.F200.0058', '192.168.30.2'], 
              ['vlan20', '0010.600a.7026', '192.168.30.4'], 
              ['vlan2', '70ca.9b99.6a82', '192.168.30.1']]   

我想用vlan编号对它进行排序,我该怎么做?所以vlan1列表,然后vlan2列表等

我已尝试将数字分开,但我不知道该怎么做,我认为这不是正确的方法。

for i in table_data:
        if i[0].startswith('vlan'):  
            vlan_number = i[0][4:]

我可以使用单个列表这样做:

sorted(table_data, key = lambda x: int(x.split("n")[1]))

但是如何将其扩展到列表列表?

1 个答案:

答案 0 :(得分:5)

试试这个:

sorted(table_data, key=lambda x: int(x[0][4:]))

在基于原始排序的解决方案中,您应该修改lambda函数。 x [0]表示每行的第一列。并且x [0] [4:]会对前4个字符产生影响,即“vlan”。