Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/343.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_List - Fatal编程技术网

Python 如何根据数值对嵌套列表进行排序?

Python 如何根据数值对嵌套列表进行排序?,python,list,Python,List,我有一个嵌套列表,如下所示: raw = [[(8, 0.44880571384598744), (17, 0.0403732344197908), (13, 0.03796821181062157), (1, 0.03777621092166489), (3, 0.02907007584458954), (5, 0.027577126778171947)], [(6, 0.24885153810452418), (13, 0.11945937235381485), (1, 0.07

我有一个嵌套列表,如下所示:

raw =  
[[(8, 0.44880571384598744), (17, 0.0403732344197908), 
(13, 0.03796821181062157), (1, 0.03777621092166489), 
(3, 0.02907007584458954), (5, 0.027577126778171947)], 
[(6, 0.24885153810452418), (13, 0.11945937235381485), 
(1, 0.07967490411502279), (7, 0.059837943219436064), 
(11, 0.054917316390175455), (3, 0.05439173103552319), 
(12, 0.042902668032641526), (2, 0.04067120278932331)]]
[[(1, 0.03777621092166489), (3, 0.02907007584458954), 
(5, 0.027577126778171947), (8, 0.44880571384598744),
(13, 0.03796821181062157), (17, 0.0403732344197908)], 
[(1, 0.07967490411502279), (2, 0.04067120278932331), 
(3, 0.05439173103552319), (6, 0.24885153810452418),
(7, 0.059837943219436064), (11, 0.054917316390175455),  
(12, 0.042902668032641526), (13, 0.11945937235381485)]]
我想根据每个子列表的索引[0]处的int对嵌套列表进行排序

但当我尝试这个:

sortraw = []
for line in raw:
    k = sorted(line[0])
    sortraw.append(k)
列表按每个子列表的浮点值排序,嵌套列表消失

我期望的结果如下所示:

raw =  
[[(8, 0.44880571384598744), (17, 0.0403732344197908), 
(13, 0.03796821181062157), (1, 0.03777621092166489), 
(3, 0.02907007584458954), (5, 0.027577126778171947)], 
[(6, 0.24885153810452418), (13, 0.11945937235381485), 
(1, 0.07967490411502279), (7, 0.059837943219436064), 
(11, 0.054917316390175455), (3, 0.05439173103552319), 
(12, 0.042902668032641526), (2, 0.04067120278932331)]]
[[(1, 0.03777621092166489), (3, 0.02907007584458954), 
(5, 0.027577126778171947), (8, 0.44880571384598744),
(13, 0.03796821181062157), (17, 0.0403732344197908)], 
[(1, 0.07967490411502279), (2, 0.04067120278932331), 
(3, 0.05439173103552319), (6, 0.24885153810452418),
(7, 0.059837943219436064), (11, 0.054917316390175455),  
(12, 0.042902668032641526), (13, 0.11945937235381485)]]
我该怎么做

raw = [[(8, 0.44880571384598744), (17, 0.0403732344197908), 
... (13, 0.03796821181062157), (1, 0.03777621092166489), 
... (3, 0.02907007584458954), (5, 0.027577126778171947)], 
... [(6, 0.24885153810452418), (13, 0.11945937235381485), 
... (1, 0.07967490411502279), (7, 0.059837943219436064), 
... (11, 0.054917316390175455), (3, 0.05439173103552319), 
... (12, 0.042902668032641526), (2, 0.04067120278932331)]]
>>> [sorted(sublist) for sublist in raw]
[[(1, 0.03777621092166489), (3, 0.02907007584458954), (5, 0.027577126778171947), (8, 0.44880571384598744), (13, 0.03796821181062157), (17, 0.0403732344197908)], [(1, 0.07967490411502279), (2, 0.04067120278932331), (3, 0.05439173103552319), (6, 0.24885153810452418), (7, 0.059837943219436064), (11, 0.054917316390175455), (12, 0.042902668032641526), (13, 0.11945937235381485)]]
或者在适当的地方进行:

for sublist in raw: sublist.sort()

如果不想对整个
raw
列表进行排序,可以使用:

list(map(sorted, raw)

您可以改用lambda函数:

print(list(map(lambda x:sorted(x), raw)))
输出:

[[(1, 0.03777621092166489), (3, 0.02907007584458954), (5, 0.027577126778171947), (8, 0.44880571384598744), (13, 0.03796821181062157), (17, 0.0403732344197908)], [(1, 0.07967490411502279), (2, 0.04067120278932331), (3, 0.05439173103552319), (6, 0.24885153810452418), (7, 0.059837943219436064), (11, 0.054917316390175455), (12, 0.042902668032641526), (13, 0.11945937235381485)]]

sorted(line[0])
->
sorted(line,key=line[0])
-您想保留整个列表(
line
),但按第一个元素(key)排序@h4z3我不确定您在说什么,您的key(
key=line[0]
)不是一个定义的函数或
lambda
@jamylak啊,是的,这是一个快速评论,但是这个想法应该是清楚的好的,这比使用
list(map)(
)的另一个答案要好,因为你避免了使用不必要的
lambda