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

标签 python sorting std

我正在使用从 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/

相关文章:

Python:一旦找到真值,any() 是否会停止迭代列表/生成器?

python - operator[] 的 Swig 警告抑制

arrays - 如何在 Swift 中按属性值对自定义对象数组进行排序

c++ - 移动 std::set 后指针的有效性

python - twistd 和 nohup & : what is the difference?

python - 对于 X 轴中的字符串值,堆叠直方图失败

php - 如何为数组中的每个子项添加父项 ID? php

javascript - 如何在 jQuery 中对随机 div 顺序进行排序?

c++ - std::bind 和 winsock.h 绑定(bind)混淆

C++时间添加+超时检测