Sắp xếp dictionary python | Laptrinhcanban.com

Sắp xếp dictionary python

Hướng dẫn cách sắp xếp dictionary python. Bạn sẽ học được cách sắp xếp dictionary python bằng hàm sorted() cũng như cách thay đổi luật sắp xếp dictionary python sau bài học này.

Sắp xếp dictionary python theo thứ tự tăng dần | hàm sorted()

Để xắp xếp các phần tử của dictionary trong python, hãy sử dụng hàm sorted() với cú pháp sau đây:

sorted(dictionary)

Trong đó sorted là tên hàm số và dictionary là dictionary cần sắp xếp.
Hàm số sorted() sẽ sắp xếp các phần tử trong dictionary cũ và tạo ra một list mới.

Quy tắc sắp xếp sẽ như dưới đây:

  • Giá trị số: Thứ tự tăng dần
  • Bảng chữ cái: Thứ tự tăng dần của bảng chữ cái (ưu tiên chữ hoa)
  • Khi các ký tự được trộn lẫn: Thứ tự tăng dần theo mã Unicode

Lại nữa, chúng ta có thể sử dụng hàm sorted() để sắp xếp dictionary python theo key, value hoặc là cả hai bằng cách kết hợp với các phương thức của dictionary giống như dưới đây:

Sắp xếp theo key | phương thức keys()

Nếu chúng ta truyền đối số cho hàm sorted() bằng một dictionary, kết quả trả về sẽ chỉ là một list mới với phần tử là key của dictionary ban đầu.

dict = {1:'red', 2:'blue', 3:'yellow'}
keys_sorted1 = sorted(dict)
print(keys_sorted1)

#>> [1, 2, 3]

Chúng ta cũng có thể dùng kèm phương thức keys() khi chỉ định đối số cho hàm sorted() như sau, và kết quả cũng giống nhau:

keys_sorted1 = sorted(dict.keys())
print(keys_sorted1)

#>> [1, 2, 3]

Có thể thấy, việc sử dụng phương thức keys() hay không cũng không làm thay đổi kết quả sắp xếp nên thông thường chúng ta có thể lược bỏ đi.

Tuy nhiên khi phát triển phần mềm python theo team và cần một phương thức chung cho cả nhóm để sắp xếp dictionary, thì bạn nên chỉ định sắp xếp dictionary kèm phương thức keys() cho cả nhóm.

Sắp xếp theo value | phương thức values()

Khi bạn muốn chỉ sắp xếp dictionary python theo value, hãy truyền đối số cho hàm sorted() bằng cách sử dụng phương thức values().

dict = {1:'red', 2:'blue', 3:'yellow'}
values_sorted = sorted(dict.values())
print(values_sorted)

#>> ['blue', 'red', 'yellow']

Trong ví dụ trên, chúng ta truyền đối số dict.values() vào hàm sorted(), do đó chỉ value của dictionary được sắp xếp. Kết quả trả về là một list mới là các value của dictionary cũ được sắp xếp theo thứ tự tăng dần.

Sắp xếp theo cả key và value | phương thức items()

Khi bạn muốn chỉ sắp xếp dictionary python theo cả key và value, hãy truyền đối số cho hàm sorted() bằng cách sử dụng phương thức items().

dict = {1:'red', 2:'blue', 3:'yellow'}
items_sorted = sorted(dict.items())
print(items_sorted)

#>> [(1, 'red'), (2, 'blue'), (3, 'yellow')]

Trong trường hợp này, theo mặc định thì hàm sorted() sẽ sắp xếp dictionary theo key.

Tuy nhiên nếu bạn muốn hàm sorted() sắp xếp dictionary theo value, hãy chỉ định thêm một đối số của hàm sorted() bằng một hàm không tên được tạo ra bởi hàm lambda như sau:

dict = {1:'red', 2:'blue', 3:'yellow'}
items_sorted = sorted(dict.items(), key = lambda x : x[1])
print(items_sorted)

#>> [(2, 'blue'), (1, 'red'), (3, 'yellow')]

Về cách sử dụng hàm lambda, hãy tiếp tục theo dõi ở phần Thay đổi luật sắp xếp dictionary python | key = hàm nhé.

Sắp xếp dictionary python theo thứ tự giảm dần | hàm sorted()

Để sắp xếp dictionary python theo thứ tự giảm dần bằng hàm sorted(), hãy chỉ định thêm đối số reverse=True như sau:

sorted(dictionary , reverse=True)

Về cách sử dụng cũng tương tự như với khi bạn sắp xếp dictionary python theo thứ tự tăng dần như trên. Sau đây, hãy cùng tìm hiểu một số ví dụ cụ thể nhé.

Sắp xếp giảm dần theo key

Dưới đây là ví dụ sắp xếp dictionary python theo key giảm dần bằng hàm sorted().

dict = {1:'red', 2:'blue', 3:'yellow'}
keys_sorted1 = sorted(dict, reverse=True)
print(keys_sorted1)

#>> [3, 2, 1]

Sắp xếp giảm dần theo value

Dưới đây là ví dụ sắp xếp dictionary python theo value giảm dần bằng hàm sorted().

dict = {1:'red', 2:'blue', 3:'yellow'}
values_sorted = sorted(dict.values(), reverse=True)
print(values_sorted)

#>> ['yellow', 'red', 'blue']

Sắp xếp giảm dần theo cả key và values

Dưới đây là ví dụ sắp xếp dictionary python giảm dần theo key và value bằng hàm sorted().

dict = {1:'red', 2:'blue', 3:'yellow'}
items_sorted = sorted(dict.items(), reverse=True)
print(items_sorted)

#>> [(3, 'yellow'), (2, 'blue'), (1, 'red')]

Thay đổi luật sắp xếp dictionary python | key = hàm

Ở phần trên, bạn đã thấy cách thay đổi sắp xếp mặc định từ key sang value của hàm sorted() rồi phải không?

Với việc chỉ định thêm đối số key của hàm sorted(), chúng ta có thể thay đổi luật sắp xếp của hàm này, với cú pháp sau đây:

sorted(dictionary, key= hàm số)

Trong đó hàm số là hàm sẽ dùng để thay đổi luật sắp xếp, ví dụ như hàm lambda ở trên, hay hàm len() v.v..

Có một điểm thú vị là trong python tồn tại cả hàm số được dựng sẵn, và hàm số do chúng ta tự tạo ra.
Do đó bằng việc tự viết hàm số và chỉ định hàm đó vào đối số key, chúng ta có thể tự do thay đổi luật sắp xếp dictionary python.

Hãy xem một số ví dụ sau đây:
Ví dụ đầu tiên, chúng ta sử dụng hàm len() để thay đổi luật sắp xếp. Khi đó thay vì sắp xếp dictionary theo key, chúng ta sẽ sắp xếp theo độ dài của value như sau:

dict = {1:'red', 2:'blue', 3:'yellow'}
values_sorted1 = sorted(dict.values(), key=len)
print(values_sorted1)

#>> ['red', 'blue', 'yellow']

Ngoài ra, với việc kết hợp đối số reverse=True, chúng ta cũng có thể sắp xếp giảm dần theo độ dài của value như sau:

dict = {1:'red', 2:'blue', 3:'yellow'}
values_sorted1 = sorted(dict.values(), reverse=True, key=len)
print(values_sorted1)

#>> ['yellow', 'blue', 'red']

Ví dụ thứ hai, chính là ví dụ sử dụng lambda x : x[1] như ở phần trên. Với việc sử dụng hàm lambda, chúng ta thay đổi luật sắp xếp và tiến hành sắp xếp dictionary theo value.

dict = {1:'red', 2:'blue', 3:'yellow'}
items_sorted = sorted(dict.items(), key = lambda x : x[1])
print(items_sorted)

#>> [(2, 'blue'), (1, 'red'), (3, 'yellow')]

Ở đây, với cách viết hàm lambda lambda (biểu thức lambda), chúng ta đã tạo ra một hàm không tên lambda x : x[1] và sử dụng hàm này để tiến hành sắp xếp.

Hàm lambda x : x[1] có ý nghĩa, lấy phần tử có index = 1 từ trong list x ra.
Trong dictionary, các phần tử được tạo bởi một cặp key và value, nên x ở đây chính là một list có hai phần tử là key và value:

x=[key,value]

Do đó chỉ định x[1] chính là value. Ngoài ra, chúng ta cũng có thể chỉ định x[0] chính là key. Bằng việc thay đổi cách chỉ định này, chúng ta có thể tiến hành sắp xếp dictionary theo key hoặc value như dưới đây:

  • Chỉ định key = lambda x : x[0] : sắp xếp dictionary theo key
  • Chỉ định key = lambda x : x[1] : sắp xếp dictionary theo value

Hãy xem ví dụ sau đây để hiểu rõ hơn:

dict = {1:'red', 2:'blue', 3:'yellow'}
# Sử dụng lambda và sắp xếp dictionary theo key
items_sorted = sorted(dict.items(), key = lambda x : x[0])
print(items_sorted)

#>> [(2, 'blue'), (1, 'red'), (3, 'yellow')]

# Sử dụng lambda và sắp xếp dictionary theo value
items_sorted = sorted(dict.items(), key = lambda x : x[1])
print(items_sorted)

#>> [(2, 'blue'), (1, 'red'), (3, 'yellow')]

Tổng kết

Trên đây Kiyoshi đã hướng dẫn bạn cách sắp xếp dictionary python mặc định bằng hàm sorted() cũng như cách thay đổi luật sắp xếp dictionary python rồi. Để nắm rõ nội dung bài học hơn, bạn hãy thực hành viết lại các ví dụ của ngày hôm nay nhé.

Và hãy cùng tìm hiểu những kiến thức sâu hơn về python trong các bài học tiếp theo.

HOME>> >>

Profile
きよしです!笑

Tác giả : Kiyoshi (Chis Thanh)

Kiyoshi là một cựu du học sinh tại Nhật Bản. Sau khi tốt nghiệp đại học Toyama năm 2017, Kiyoshi hiện đang làm BrSE tại Tokyo, Nhật Bản.