对列表的各个元素进行排序

时间:2019-04-17 18:30:15

标签: python

我正在尝试对列表的各个元素进行排序,但不一定对整个列表进行排序。

给出以下列表

L = ['A,X,D' , 'Q,A' , 'A,C,B']

我想按字母顺序对各个元素进行排序,使其看起来如下所示

L = ['A,D,X' , 'A,Q', 'A,B,C']

我尝试过

L = sorted(L, key = lambda x: x[0])

4 个答案:

答案 0 :(得分:3)

尝试:

L = [",".join(sorted(l.split(","))) for l in L]

答案 1 :(得分:3)

您可以将str.splitsorted一起使用:

L = ['A,X,D' , 'Q,A' , 'A,C,B']
new_l = [','.join(sorted(i.split(','))) for i in L]

输出:

['A,D,X', 'A,Q', 'A,B,C']

答案 2 :(得分:2)

您需要对列表的每个部分进行排序:

L = ['A,X,D' , 'Q,A' , 'A,C,B']

L2 = [','.join(sorted(x.split(','))) for x in L]

L2
# ['A,D,X', 'A,Q', 'A,B,C']

如果您不使用split,则将使用包含的逗号进行排序,逗号的字典值比字母字符低:

sorted(L[0])
# ',', ',', 'A', 'D', 'X'

join会将逗号放回原来的位置

答案 3 :(得分:0)

您要根据每个字符串对字符串列表进行排序。

首先,您需要将字符串转换为list,如下所示:

list_of_lists = [l.split(',') for l in L]

output:
[['A', 'X', 'D'], ['Q', 'A'], ['A', 'C', 'B']]

然后,您要对每个列表进行排序:

sorted_lists = [sorted(l) for l in list_of_lists]

output:
[['A', 'D', 'X'], ['A', 'Q'], ['A', 'B', 'C']]

现在我们已经对每个列表进行了排序,我们想将内部列表转换回字符串(我们可以使用join):

list_of_strings = [','.join(l) for l in sorted_lists]

output:
['A,D,X', 'A,Q', 'A,B,C']

或者您可以像这样一行完成所有操作:

sorted_strings = [','.join(sorted(l.split(','))) for l in L]

output:
['A,D,X', 'A,Q', 'A,B,C']