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

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

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

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

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

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

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

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

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

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