Có cách nào để sử dụng phương thức sort [] hoặc bất kỳ phương thức nào khác để sắp xếp danh sách theo cột không? Giả sử tôi có danh sách:
[
[John,2],
[Jim,9],
[Jason,1]
]
Và tôi muốn sắp xếp nó để nó trông như thế này:
[
[Jason,1],
[John,2],
[Jim,9],
]
Điều gì sẽ là cách tiếp cận tốt nhất để làm điều này?
Edit:
Ngay bây giờ tôi đang gặp phải một chỉ mục ngoài phạm vi lỗi. Tôi có một mảng 2 chiều là giả sử 1000 hàng b 3 cột. Tôi muốn sắp xếp nó dựa trên cột thứ ba. Đây có phải là mã phù hợp cho điều đó?
sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
Đã hỏi ngày 25 tháng 11 năm 2013 lúc 0:38Nov 25, 2013 at 0:38
Web hy vọngWeb hy vọngWeb Hopeful
7112 Huy hiệu vàng6 Huy hiệu bạc11 Huy hiệu đồng2 gold badges6 silver badges11 bronze badges
3
Đúng.
[
[Jason,1],
[John,2],
[Jim,9],
]
3 tích hợp chấp nhận đối số [
[Jason,1],
[John,2],
[Jim,9],
]
4:sorted[li,key=lambda x: x[1]]
Out[31]: [['Jason', 1], ['John', 2], ['Jim', 9]]
Lưu ý rằng
[
[Jason,1],
[John,2],
[Jim,9],
]
3 trả về một danh sách mới. Nếu bạn muốn sắp xếp tại chỗ, hãy sử dụng phương thức [
[Jason,1],
[John,2],
[Jim,9],
]
6 của danh sách của bạn [cũng thuận tiện, chấp nhận đối số [
[Jason,1],
[John,2],
[Jim,9],
]
4].Hay cách khác,
from operator import itemgetter
sorted[li,key=itemgetter[1]]
Out[33]: [['Jason', 1], ['John', 2], ['Jim', 9]]
Đọc thêm trên Wiki Python.
Đã trả lời ngày 25 tháng 11 năm 2013 lúc 0:44Nov 25, 2013 at 0:44
Roippiroippiroippi
25.1k4 Huy hiệu vàng46 Huy hiệu bạc72 Huy hiệu đồng4 gold badges46 silver badges72 bronze badges
4
Bạn có thể sử dụng phương thức sắp xếp với một khóa.
sorted[a, key=lambda x : x[1]]
Đã trả lời ngày 25 tháng 11 năm 2013 lúc 0:41Nov 25, 2013 at 0:41
Squiguysquiguysquiguy
31.4K6 Huy hiệu vàng55 Huy hiệu bạc62 Huy hiệu Đồng6 gold badges55 silver badges62 bronze badges
Bạn có thể sử dụng
[
[Jason,1],
[John,2],
[Jim,9],
]
8 với tham số [
[Jason,1],
[John,2],
[Jim,9],
]
4 tùy chọn của nó và biểu thức sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
0:>>> lst = [
... ['John',2],
... ['Jim',9],
... ['Jason',1]
... ]
>>> lst.sort[key=lambda x:x[1]]
>>> lst
[['Jason', 1], ['John', 2], ['Jim', 9]]
>>>
Điều này sẽ sắp xếp danh sách tại chỗ.
Lưu ý rằng đối với các danh sách lớn, việc sử dụng
sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
1 sẽ nhanh hơn thay vì sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
0:>>> from operator import itemgetter
>>> lst = [
... ['John',2],
... ['Jim',9],
... ['Jason',1]
... ]
>>> lst.sort[key=itemgetter[1]]
>>> lst
[['Jason', 1], ['John', 2], ['Jim', 9]]
>>>
Đã trả lời ngày 25 tháng 11 năm 2013 lúc 0:44Nov 25, 2013 at 0:44
4
sorted[list, key=lambda x: x[1]]
Roippiroippi
25.1k4 Huy hiệu vàng46 Huy hiệu bạc72 Huy hiệu đồngJul 30, 2016 at 6:19
Bạn có thể sử dụng phương thức sắp xếp với một khóa.kevin
Đã trả lời ngày 25 tháng 11 năm 2013 lúc 0:411 gold badge12 silver badges16 bronze badges
Squiguysquiguy
>>> lst = [['John', 2], ['Jim', 9], ['Jason', 1]]
>>> def my_key_func[item]:
... print["The key for {} is {}".format[item, item[1]]]
... return item[1]
...
>>> sorted[lst, key=my_key_func]
The key for ['John', 2] is 2
The key for ['Jim', 9] is 9
The key for ['Jason', 1] is 1
[['Jason', 1], ['John', 2], ['Jim', 9]]
31.4K6 Huy hiệu vàng55 Huy hiệu bạc62 Huy hiệu Đồng
[
[Jason,1],
[John,2],
[Jim,9],
]
0Bạn có thể sử dụng
[
[Jason,1],
[John,2],
[Jim,9],
]
8 với tham số [
[Jason,1],
[John,2],
[Jim,9],
]
4 tùy chọn của nó và biểu thức sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
0:[
[Jason,1],
[John,2],
[Jim,9],
]
1Điều này sẽ sắp xếp danh sách tại chỗ.Nov 25, 2013 at 0:58
Lưu ý rằng đối với các danh sách lớn, việc sử dụng
sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
1 sẽ nhanh hơn thay vì sorted_list = sorted[list_not_sorted, key=lambda x:x[2]]
0:John La RooyLưu ý: Điều này hoạt động theo biến thời gian quá.51 gold badges359 silver badges500 bronze badges
Đã trả lời ngày 30 tháng 7 năm 2016 lúc 6:19
[
[Jason,1],
[John,2],
[Jim,9],
]
2Kevinkevin
1.0371 Huy hiệu vàng12 Huy hiệu bạc16 Huy hiệu đồngJun 27, 2020 at 4:27