我有一个输出大量数据的 python 脚本,示例如下。 4 个字段中的第一个始终由两个字母、一个数字、一个斜杠和一个或两个数字组成
Gi3/2 --.--.--.-- 0024.e89b.c10e Dell Inc.
Gi5/4 --.--.--.-- 0030.c1cd.f038 HEWLETTPACKARD
Gi4/3 --.--.--.-- 0020.ac00.6703 INTERFLEX DATENSYSTEME GMBH
Gi3/7 --.--.--.-- 0009.4392.34f2 Cisco Systems
Gi6/6 --.--.--.-- 001c.2333.bd5a Dell Inc
Gi3/16 --.--.--.-- 0009.7c92.7af2 Cisco Systems
Gi5/12 --.--.--.-- 0020.ac00.3fb0 INTERFLEX DATENSYSTEME GMBH
Gi4/5 --.--.--.-- 0009.4392.6db2 Cisco Systems
Gi4/6 --.--.--.-- 000b.cd39.c7c8 Hewlett Packard
Gi6/4 --.--.--.-- 0021.70d7.8d33 Dell Inc
Gi6/14 --.--.--.-- 0009.7c91.fa71 Cisco Systems
在第一个字段上正确排序的最佳方法是什么,以便该示例显示为
Gi3/2 --.--.--.-- 0024.e89b.c10e Dell Inc.
Gi3/7 --.--.--.-- 0009.4392.34f2 Cisco Systems
Gi3/16 --.--.--.-- 0009.7c92.7af2 Cisco Systems
Gi4/3 --.--.--.-- 0020.ac00.6703 INTERFLEX DATENSYSTEME GMBH
Gi4/5 --.--.--.-- 0009.4392.6db2 Cisco Systems
Gi4/6 --.--.--.-- 000b.cd39.c7c8 Hewlett Packard
Gi5/4 --.--.--.-- 0030.c1cd.f038 HEWLETT PACKARD
Gi5/12 --.--.--.-- 0020.ac00.3fb0 INTERFLEX DATENSYSTEME GMBH
Gi6/14 --.--.--.-- 0009.7c91.fa71 Cisco Systems
Gi6/4 --.--.--.-- 0021.70d7.8d33 Dell Inc
Gi6/6 --.--.--.-- 001c.2333.bd5a Dell Inc
我的努力一直很困惑,导致诸如 12 之类的数字排在 5 之前!
一如既往,非常感谢您的耐心等待。
最佳答案
def lineKey (line):
keyStr, rest = line.split(' ', 1)
a, b = keyStr.split('/', 1)
return (a, int(b))
sorted(lines, key=lineKey)
关于python - python中的复合排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1054454/