我的列表包含许多这种格式的元素
(23, (12,16,42))
我现在的基本排序将默认按子列表中的第一个值排序。
value = sorted(list, key=itemgetter(1))
我想使用描述的二级排序选项 http://wiki.python.org/moin/HowTo/Sorting/
sorted(student_tuples, key=itemgetter(1,2))
那么子列表中的每一项都有一个地址吗?我试图找到一些方括号或冒号表示法,但我想只是还没发现。
示例未排序列表
(0, (81.0, 5.0, 83.0)), (1, (81.0, 1.0, 26.0)), (2, (80.0, 1.0, 44.0)),
输出类似于
(2, (80.0, 1.0, 44.0)), (1, (81.0, 1.0, 26.0)), (0, (81.0, 5.0, 83.0))
(w, (x,y,z))
所以第一个排序是在 x 上。如果有多个 x 值,则按 y 对它们进行排序
最佳答案
自己定义:
sorted(list, key=lambda item: item[0][1])
# or whatever other sort of indexing you want
在你的例子中,你想要的索引是:
sorted(list, key=lambda item: (item[1][0], item[1][1]))
因为比较元组是通过成对比较元素来工作的。 key
是将项目转换为可以直接比较以获得所需比较结果的事物的任何可调用对象。
关于python - 按python子列表中的值排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6908167/