Hướng dẫn sort 2d array python by column - sắp xếp mảng 2d python theo cột

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],
]
0

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:

[
[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 Rooy

Lư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],
]
2

Kevinkevin

1.0371 Huy hiệu vàng12 Huy hiệu bạc16 Huy hiệu đồngJun 27, 2020 at 4:27

Bài Viết Liên Quan

Chủ Đề