我正在使用从 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)]
关于Python 按第一个和第二个元素对元组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20291674/