如何基于子列表中的单个var对列表中的子列表进行排序?

2024-10-03 02:32:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我感兴趣的是对由几个子列表组成的列表进行排序

例如,我接收以下输入:

Rus Dan 264
Pop Alin 263
Stan Darius 304
Pop Tudor 252
Rusu Alin 323
Stroe Mihai 279
Rusu Paul 268

我在读台词:

for i in range(n):
    c=input("").split()
    b.append(c)

我得到的结果是:

[['Rus', 'Dan', '264'], ['Pop', 'Alin', '263'], ['Stan', 'Darius', '304'], ['Pop', 'Tudor', '252'], ['Rusu', 'Alin', '323'], ['Stroe', 'Mihai', '279'], ['Rusu', 'Paul', '268']]

我感兴趣的是按最后一个数字排序子列表,而不是按字符排序

有什么建议吗

我尝试拆分子列表,然后使用.sort()将最后一个数字设置为int,并对每个子列表进行排序,但出现了几个错误

for sublist in n:
    for item in sublist:
        flat_list.append(item)

for i in range(n)
    flat_list[i][2]=int(flat_list[i][2])

b=flat_list.sort()

#not the exact code but something extremely similar

Tags: in列表for排序pop感兴趣listdan
2条回答

试试这个:

data=[['Rus', 'Dan', '264'], ['Pop', 'Alin', '263'], ['Stan', 'Darius', '304'], ['Pop', 'Tudor', '252'], ['Rusu', 'Alin', '323'], ['Stroe', 'Mihai', '279'], ['Rusu', 'Paul', '268']]

print(sorted(data,key=lambda x:int(x[-1])))

输出:

[['Pop', 'Tudor', '252'], ['Pop', 'Alin', '263'], ['Rus', 'Dan', '264'], ['Rusu', 'Paul', '268'], ['Stroe', 'Mihai', '279'], ['Stan', 'Darius', '304'], ['Rusu', 'Alin', '323']]

使用自定义键排序。您可以使用匿名函数:

data.sort(key=lambda s: int(s[2]))

相关问题 更多 >