按python中的字段按字母顺序排列的列表[关闭]

问题描述 投票:0回答:3

我有以下列表:

all=[
"jaeger.jaeger-span.jaeger-ell.spam 385062 1583408544",
"jaeger.jaeger-span.jaeger-ell.FindTraces 385062 1583408544",
"jaeger.jaeger-span.jaeger-on.GetOperations 5177 1583376432",
"jaeger.jaeger-span.jaeger-http.GetServices 5528 1583376528",
"jaeger.jaeger-span.jaeger-query.FindTraces 70681 1583386032",
"jaeger.jaeger-span.jaeger-as.GetOperations 5177 1583376432"
]

由findtraces字段排序?我希望订购如下:

for i in all:
   print(i)

console:
jaeger.jaeger-span.jaeger-ell.FindTraces 385062 1583408544
jaeger.jaeger-span.jaeger-query.FindTraces 70681 1583386032   
jaeger.jaeger-span.jaeger-on.GetOperations 5177 1583376432
jaeger.jaeger-span.jaeger-as.GetOperations 5177 1583376432
jaeger.jaeger-span.jaeger-http.GetServices 5528 1583376528
jaeger.jaeger-span.jaeger-ell.spam 385062 1583408544
python python-2.7
3个回答
0
投票

不确定是否有直接的方法。但是,您可以使用此小代码段来实现您的目标:

all=[
"jaeger.jaeger-span.jaeger-ell.spam 385062 1583408544",
"jaeger.jaeger-span.jaeger-ell.FindTraces 385062 1583408544",
"jaeger.jaeger-span.jaeger-query.FindTraces 70681 1583386032",
"jaeger.jaeger-span.jaeger-on.GetOperations 5177 1583376432",
"jaeger.jaeger-span.jaeger-http.GetServices 5528 1583376528"
]

dic = {}
for str in all:
    key = str.split(" ")[0].split(".")[-1]
    dic[key]=str

sorted_keys = list(dic.keys())
sorted_keys.sort()
sorted_list = []
for key in sorted_keys:
    sorted_list.append(dic[key])
print(sorted_list)

0
投票

您可以尝试,

In [66]: x = [
    ...: "jaeger.jaeger-span.jaeger-ell.spam 385062 1583408544",
    ...: "jaeger.jaeger-span.jaeger-ell.FindTraces 385062 1583408544",
    ...: "jaeger.jaeger-span.jaeger-on.GetOperations 5177 1583376432",
    ...: "jaeger.jaeger-span.jaeger-http.GetServices 5528 1583376528",
    ...: "jaeger.jaeger-span.jaeger-query.FindTraces 70681 1583386032",
    ...: "jaeger.jaeger-span.jaeger-as.GetOperations 5177 1583376432"
    ...: ]

In [67]: l = list(map(lambda a: a.split('.'), x))

In [68]: l
Out[68]:
[['jaeger', 'jaeger-span', 'jaeger-ell', 'spam 385062 1583408544'],
 ['jaeger', 'jaeger-span', 'jaeger-ell', 'FindTraces 385062 1583408544'],
 ['jaeger', 'jaeger-span', 'jaeger-on', 'GetOperations 5177 1583376432'],
 ['jaeger', 'jaeger-span', 'jaeger-http', 'GetServices 5528 1583376528'],
 ['jaeger', 'jaeger-span', 'jaeger-query', 'FindTraces 70681 1583386032'],
 ['jaeger', 'jaeger-span', 'jaeger-as', 'GetOperations 5177 1583376432']]

In [69]: l.sort(key=lambda x: x[3])

In [70]: l
Out[70]:
[['jaeger', 'jaeger-span', 'jaeger-ell', 'FindTraces 385062 1583408544'],
 ['jaeger', 'jaeger-span', 'jaeger-query', 'FindTraces 70681 1583386032'],
 ['jaeger', 'jaeger-span', 'jaeger-on', 'GetOperations 5177 1583376432'],
 ['jaeger', 'jaeger-span', 'jaeger-as', 'GetOperations 5177 1583376432'],
 ['jaeger', 'jaeger-span', 'jaeger-http', 'GetServices 5528 1583376528'],
 ['jaeger', 'jaeger-span', 'jaeger-ell', 'spam 385062 1583408544']]

In [71]:

0
投票

使用all.sort(reverse=False)对列表项进行排序

© www.soinside.com 2019 - 2024. All rights reserved.