Skip to main content
 首页 » 编程设计

Python 按第一个和第二个元素对元组进行排序

2025年05月04日13yxwkf

我正在使用从 STDIN 获取输入的 python 脚本。我无法访问输入中数据的排序方式。

输入中的每一行都具有以下形式:

(Int,Int)  \t  Int 

现在,当数据进入时,它按元组排序,但不正确。所以它看起来像这样:

(0,1)     5 
(0,10)    2 
(0,2)     3 
(1,8)     7 
(1,82)    5 
(1,9)     4 

现在这是错误的,因为我希望它们先按元组中的第二个元素排序,然后再按元组中的第二个元素排序 - 所以它应该如下所示:

(0,1)     5 
(0,2)     3 
(0,10)    2 
(1,8)     7 
(1,9)     4 
(1,82)    5 

我的问题是线条一条一条地穿过。所以我必须在他们进来后对他们进行分类。

我试图分配一个数组,当一个新的元组出现时——我试图将它插入到适当的位置,但这似乎与 Python 的数组概念相矛盾。

我将如何解决这个问题?

请您参考如下方法:

也许,这更适合你:

with open('stuff.txt', 'r') as f: 
    store = [] 
    for line in f: 
        tup, num = line.split() 
        tup = tuple(map(int, tup[1:-1].split(','))) 
        num = int(num) 
 
        store.append((tup, num)) 
    print sorted(store) 

Stuff.txt:

(0,1)     5 
(0,10)    2 
(0,2)     3 
(1,8)     7 
(1,82)    5 
(1,9)     4 

输出如你所料:

[(('0', '1'), 5), (('0', '2'), 3), (('0', '10'), 2), (('1', '8'), 7), (('1', '9'), 4), (('1', '82'), 5)]