我正在尝试对列表的各个元素进行排序,但不一定对整个列表进行排序。
给出以下列表
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])
答案 0 :(得分:3)
尝试:
L = [",".join(sorted(l.split(","))) for l in L]
答案 1 :(得分:3)
您可以将str.split
与sorted
一起使用:
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']