Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/visual-studio-2008/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 按字母顺序对列表元素排序_Python_Sorting_Python 2.7 - Fatal编程技术网

Python 按字母顺序对列表元素排序

Python 按字母顺序对列表元素排序,python,sorting,python-2.7,Python,Sorting,Python 2.7,我用以下代码加载的数据将以以下格式结束: new_list = [['1', '100', 'A', 'B,A'], ['2', '200', 'A', 'T'], ['3', '200', 'H', 'A,C'], ['4', '300', 'W', 'T'], ['5', '400', 'I', 'BABA,ABB'], ['6', '500', 'Q', 'LP,AL']] 我想要实现的是按字母顺序对最后一列进行排序,将列表更改为: new_list = [['1', '100', 'A

我用以下代码加载的数据将以以下格式结束:

new_list = [['1', '100', 'A', 'B,A'], ['2', '200', 'A', 'T'],
['3', '200', 'H', 'A,C'], ['4', '300', 'W', 'T'],
['5', '400', 'I', 'BABA,ABB'], ['6', '500', 'Q', 'LP,AL']]
我想要实现的是按字母顺序对最后一列进行排序,将列表更改为:

new_list = [['1', '100', 'A', 'A,B'], ['2', '200', 'A', 'T'],
['3', '200', 'H', 'A,C'], ['4', '300', 'W', 'T'],
['5', '400', 'I', 'ABB,BABA'], ['6', '500', 'Q', 'AL,LP']]
但是,我不知道如何仅对列表中的指定索引进行排序。 我是否应该拆分
上的最后一列

样本数据:

# Data
# I
# don't
# need
1   100 982 A   B,A 41
2   200 982 A   T   42
3   200 982 H   C   43
4   300 982 W   T   43
5   400 982 I   BABA,ABB    44
6   500 982 Q   LP,AL   44
加载数据:

filename = 'test.txt'

new_list = []

readFile = open(filename, 'r')
lines = readFile.readlines()
for line in lines:
    if not line[0].startswith('#'):
        linewords = line.split()
        new_list.append([linewords[0],
                        linewords[1],
                        linewords[3],
                        linewords[4]])
在“,”上拆分,然后排序,然后加入列表:

new_list.append([linewords[0],
                        linewords[1],
                        linewords[3],
                        ",".join(sorted(linewords[4].split(",")))])

首先拆分,然后排序,最后联接。可能有多个空格,可以使用regex split

import re
p = re.compile(' +')

for line in lines:
    if line.startswith('#'):
        continue
    linewords = p.split(line)
    lastword = linewords[4].split(',')
    lastword.sort()
    new_list.append([linewords[0],linewords[1],linewords[3],','.join(lastword)])
尝试:

试试这个

list2 = []

for level1 in new_list:
    _temp = []
    for level2 in level1:
        if "," in level2:
            _temp.append(sorted(level2.split(",")))
        else:
            _temp.append(level2)
    list2.append(_temp)

print list2
[x[:-1]+[','.join(sorted(x[-1].split(',')))] for x in new_list]
list2 = []

for level1 in new_list:
    _temp = []
    for level2 in level1:
        if "," in level2:
            _temp.append(sorted(level2.split(",")))
        else:
            _temp.append(level2)
    list2.append(_temp)

print list2