Khóa từ điển Python có được sắp xếp không?

Từ điển giống như một bảng băm lưu trữ các phần tử bằng cách tính toán giá trị băm của các khóa và thứ tự của các phần tử trong đó không thể dự đoán được. Do đó, nó còn được gọi là vật chứa không có thứ tự và chúng ta có thể sắp xếp từ điển tại chỗ. Nhưng chúng ta có thể tạo một cặp tạo danh sách các bộ dữ liệu [giá trị khóa] được sắp xếp hoặc chúng ta có thể lặp lại nội dung của từ điển theo thứ tự được sắp xếp

Hãy xem cách sắp xếp nội dung của từ điển theo những cách khác nhau,

quảng cáo

Sắp xếp nội dung từ điển theo khóa

Có nhiều cách khác nhau để sắp xếp các phần tử của dictionary be keys i. e

Sắp xếp nội dung Từ điển theo các phím bằng dict. phím[]

dict.keys[]

Nó trả về chế độ xem có thể lặp lại của tất cả các khóa trong từ điển

Chúng ta có thể tạo một từ điển được sắp xếp mới từ chuỗi khóa có thể lặp lại này. e

sorted[wordsFreqDict.keys[]]

Bây giờ chúng tôi sẽ lặp lại danh sách các khóa được sắp xếp này và chọn từng mục từ từ điển i. e

'''
 Iterate over a sorted list of keys and select value from dictionary for each key
 and print the key value pairs in sorted order of keys
'''
for key in sorted[wordsFreqDict.keys[]] :
    print[key , " :: " , wordsFreqDict[key]]

Nó sẽ in từ điển theo thứ tự sắp xếp của các khóa i. e

at  ::  23
hello  ::  56
test  ::  43
this  ::  43

Bây giờ chúng ta có thể đạt được điều tương tự bằng cách sử dụng một chức năng khác của từ điển i. e. mặt hàng[]. nó hiệu quả hơn

Sắp xếp nội dung Từ điển theo các phím bằng dict. mặt hàng[]

dict.items[]

Nó trả về một chuỗi các bộ lặp có thể lặp lại chứa tất cả các cặp giá trị khóa trong từ điển
Chúng ta có thể tạo một danh sách tuple được sắp xếp mới theo trình tự lặp lại này i. e

sorted[wordsFreqDict.keys[]]

Theo mặc định, sorted sẽ sắp xếp danh sách tuple theo phần tử đầu tiên trong tuple i. e. trên chỉ mục thứ 0. Vì vậy, danh sách các bộ dữ liệu [cặp khóa/giá trị] được sắp xếp theo khóa. Bây giờ chúng ta có thể lặp lại danh sách sắp xếp này của tuple i. e. tất cả các cặp giá trị khóa được sắp xếp từ từ điển i. e

'''
 Iterate over a  list of tuple i.e. key / value pairs, sorted by default 0th index i.e. key
 and print the key value pairs in sorted order of keys
'''
for elem in sorted[wordsFreqDict.items[]] :
    print[elem[0] , " ::" , elem[1] ]

Nó sẽ in từ điển theo thứ tự sắp xếp của các khóa i. e

at  ::  23
hello  ::  56
test  ::  43
this  ::  43

Nó hiệu quả hơn phương pháp trước về độ phức tạp, bởi vì sau khi sắp xếp chuỗi có thể lặp lại, chúng ta không cần tìm kiếm giá trị cho khóa như trong trường hợp dict. phím[]

Chúng ta có thể đạt được điều tương tự bằng cách sử dụng Danh sách hiểu i. e

________số 8_______

Sắp xếp nội dung từ điển theo thứ tự ngược lại của các phím

Cả hai giải pháp trước đó đều sắp xếp từ điển theo khóa nhưng theo thứ tự tăng dần. Điều gì sẽ xảy ra nếu chúng ta muốn sắp xếp nội dung theo thứ tự khóa giảm dần. Chúng ta có thể làm điều này bằng cách chuyển một thuộc tính trong hàm sorted[] i. e. đảo ngược=Đúng tôi. e

dict.keys[]
0

Hãy sử dụng điều này để sắp xếp danh sách các bộ theo khóa [phần tử chỉ mục thứ 0] và theo thứ tự ngược lại i. e. Thứ tự giảm dần,

dict.keys[]
1

Nó sẽ in từ điển theo thứ tự sắp xếp của các phím ngược lại i. e

dict.keys[]
2

Sắp xếp nội dung từ điển theo khóa bằng các chức năng khóa tùy chỉnh

Chúng tôi cũng có thể sắp xếp nội dung của từ điển theo logic tùy chỉnh. Giống như trong trường hợp từ điển của chúng tôi, chúng tôi muốn sắp xếp theo độ dài của chuỗi khóa

dict.keys[]
3

Hàm sorted[] chấp nhận một hàm chính làm đối số và gọi nó trên từng phần tử trước khi so sánh với các phần tử khác
Vì vậy, để sắp xếp các khóa từ điển theo độ dài của chuỗi, chúng ta sẽ chuyển một hàm lambda làm hàm khóa sẽ trả về kích thước của chuỗi i. e

dict.keys[]
4

Nó sẽ tạo một danh sách các bộ dữ liệu, được sắp xếp theo kích thước khóa i. e

dict.keys[]
5

Sắp xếp nội dung từ điển theo Giá trị

Để sắp xếp các phần tử từ điển theo giá trị, chúng ta sẽ sử dụng hàm sorted[] tương tự và truyền một hàm khóa sẽ trả về phần tử chỉ mục thứ 1 của bộ dữ liệu i. e. trường giá trị từ cặp khóa/giá trị,

dict.keys[]
6

Vì chức năng chính này sẽ được gọi trên từng phần tử trước khi thực hiện so sánh trong khi sắp xếp, nên danh sách các bộ sẽ được sắp xếp theo giá trị i. e

Trong bài viết này chúng ta sẽ tìm hiểu từ điển là gì và sự cần thiết của việc sắp xếp từ điển. Sau này, chúng ta sẽ hiểu cách sắp xếp từ điển theo giá trị và theo khóa cùng với ví dụ và đầu ra tương ứng. Vậy hãy bắt đầu

Từ điển là gì?

Từ điển là một trong những cấu trúc dữ liệu trong ngôn ngữ python. Từ điển là tập hợp thứ tự các mục dữ liệu được lưu trữ dưới dạng bản đồ, không giống bất kỳ loại dữ liệu nào khác. Từ điển lưu trữ dữ liệu ở dạng cặp khóa-giá trị giúp thu thập dữ liệu được tối ưu hóa hơn. Hãy nhớ rằng các phím trong từ điển không cho phép lặp lại. Do đó, các mục từ điển được sắp xếp theo thứ tự, có thể thay đổi và không cho phép trùng lặp

Chúng tôi có thể truy xuất các mục dữ liệu trong từ điển bằng tên khóa tương ứng. Chúng ta có thể định nghĩa từ điển bằng danh sách các cặp khóa-giá trị được phân tách bằng dấu phẩy giữa các dấu ngoặc nhọn [{}]

Khóa và giá trị bên trong từ điển được phân tách bằng dấu hai chấm [. ] giữa khóa và giá trị tương ứng. Hãy nhớ rằng khóa phải là một phần tử duy nhất trong khi giá trị có thể thuộc bất kỳ loại dữ liệu nào.  

Cần sắp xếp trong từ điển

Việc sắp xếp dữ liệu rất quan trọng khi chúng ta đang xử lý một lượng lớn dữ liệu. Rất khó để có được đầu ra mong muốn một cách nhanh chóng và hiệu quả khi bộ sưu tập dữ liệu rất lớn. Trong những trường hợp như vậy, chúng ta có thể giảm độ phức tạp của việc thu thập dữ liệu bằng cách sắp xếp dữ liệu theo chuỗi số hoặc chuỗi bảng chữ cái để có kết quả nhanh chóng.

Ví dụ: hãy xem xét danh bạ của bạn trên điện thoại di động, chi tiết liên lạc của mọi người được lưu trữ với tên dưới dạng khóa không được lặp lại tên và chúng được sắp xếp theo thứ tự bảng chữ cái để có các kỹ thuật tìm kiếm hiệu quả

Do đó, khi bạn muốn tìm kiếm chi tiết liên lạc của một người có tên cụ thể, bạn chuyển đến chữ cái đầu tiên của tên trong danh bạ và giảm thời gian cũng như công sức của bạn bằng cách đi qua từng chi tiết liên hệ trong danh bạ của bạn. Qua ví dụ này, chúng ta có thể nói rằng việc sắp xếp từ điển không chỉ quan trọng đối với mục đích lập trình mà còn rất quan trọng trong cuộc sống hàng ngày của chúng ta.  

Sắp xếp từ điển theo giá trị trong Python

Như chúng ta đều biết rằng từ điển chứa các cặp khóa và giá trị, do đó, có tổng cộng 3 phương pháp để chúng ta có thể sắp xếp từ điển bằng cách sử dụng thành phần giá trị. Hãy để chúng tôi hiểu chi tiết ba phương pháp dưới đây

1] Sử dụng vòng lặp

Chúng ta có thể sử dụng phương thức sorted[] của python cùng với vòng lặp for để sắp xếp từ điển trong python bằng giá trị. Trong phương thức, trước tiên chúng ta tạo danh sách các khóa từ điển và sắp xếp danh sách các khóa bằng cách sử dụng phương thức sorted[] cùng với chúng trong một vòng lặp. Đầu ra sẽ là từ điển được sắp xếp như trong ví dụ dưới đây

Chúng ta có thể sắp xếp từ điển trong python với sự trợ giúp của thư viện NumPy. Trong ví dụ dưới đây, chúng tôi nhập thư viện python NumPy và sắp xếp các giá trị của từ điển bằng phương thức 'argsort' trong thư viện NumPy. Sau đó, chúng tôi tạo danh sách các khóa từ điển bằng phương thức list[] và sắp xếp từ điển bằng cách kết hợp nó với phương thức sorted[] để lấy các giá trị của từ điển. Cuối cùng, chúng tôi sử dụng vòng lặp for để lấy từ điển được sắp xếp như đầu ra được đưa ra bên dưới.  

Thí dụ

import numpy as np

dictionary = { 'A':1,'ABC':3,'ABCD':4,'AB':2 }
print["Dictionary: ", dictionary]
sorted_value_index = np.argsort[dictionary.values[]]
dictionary_keys = list[dictionary.keys[]]
sort_dictionary = {dictionary_keys[i]:sorted[dictionary.values[]][i] for i in range[len[dictionary_keys]]}
print["Sorted Dictionary by value: ", sort_dictionary]

 

đầu ra

Dictionary:  {'A': 1, 'ABC': 3, 'ABCD': 4, 'AB': 2}
Sorted Dictionary by value:  {'A': 1, 'ABC': 2, 'ABCD': 3, 'AB': 4}

 

2] Sử dụng chức năng lambda

Phương thức sorted[] của Python cùng với hàm lambda có thể được sử dụng để sắp xếp từ điển theo giá trị trong python theo thứ tự được xác định trước. Ở đây hàm lambda trong python tạo một hàm ẩn danh giúp tối ưu code. Cú pháp của hàm lambda sẽ như dưới đây

đối số lambda. sự diễn đạt

 

Thí dụ

 

dictionary = { 'A':1,'ABC':3,'ABCD':4,'AB':2 }
print["Dictionary: ", dictionary]
sort_dictionary= dict[sorted[dictionary.items[], key=lambda item: item[1]]] 
print["Sorted Dictionary by value: ", sort_dictionary]

 

 

đầu ra

 

Dictionary:  {'A': 1, 'ABC': 3, 'ABCD': 4, 'AB': 2}
Sorted Dictionary by value:  {'A': 1, 'AB': 2, 'ABC': 3, 'ABCD': 4}

 

3] Sử dụng từ điển. item[] Phương thức

Trong phương thức này, chúng ta sẽ sử dụng các phương thức items[] để sắp xếp từ điển cùng với phương thức sorted[] trong python. Phương thức sẽ sắp xếp từ điển theo các giá trị của nó và trả về từ điển đã sắp xếp như hình bên dưới

Thí dụ

from operator import itemgetter
dictionary = { 'A':1,'ABC':3,'ABCD':4,'AB':2 }
print["Dictionary: ", dictionary]
sort_dict= dict[sorted[dictionary.items[], key=itemgetter[1]]] 
print["Sorted Dictionary by value: ", sort_dict]

 

đầu ra

Dictionary:  {'A': 1, 'ABC': 3, 'ABCD': 4, 'AB': 2}
Sorted Dictionary by value:  {'A': 1, 'AB': 2, 'ABC': 3, 'ABCD': 4}

 

Sắp xếp từ điển theo khóa trong Python

Ngoài việc sắp xếp từ điển bằng các giá trị, chúng ta cũng có thể sắp xếp từ điển bằng thành phần khóa. Dưới đây là 3 phương pháp sắp xếp từ điển bằng các phím

1] Sử dụng vòng lặp

Chúng ta có thể sắp xếp từ điển trong python bằng cách sử dụng các phím với sự trợ giúp của phương thức keys[] và vòng lặp. Tại đây, các khóa được tách khỏi từ điển bằng phương thức keys[] và sau đó được sắp xếp với sự trợ giúp của vòng lặp for. Kết quả là, chúng tôi nhận được từ điển được sắp xếp làm đầu ra giống như trong ví dụ bên dưới

Thí dụ

dictionary = {'john':'1','alice':'90','rook':'45','emma':'22','roz':'11'} 
sorted_keys = sorted[dictionary.keys[]]
sorted_dict = {key:dictionary[key] for key in sorted_keys}
print[sorted_dict]

 

đầu ra

{'alice': '90', 'emma': '22', 'john': '1', 'rook': '45', 'roz': '11'}

 

2] Sử dụng Phương thức sorted[]

Chúng ta cũng có thể sắp xếp từ điển trong python bằng phương thức sorted[]. Ở đây, chúng tôi gọi phương thức đã sắp xếp cho từ điển đã cho và sau đó sắp xếp nó bằng cách sử dụng vòng lặp for cho các khóa đã cho như trong ví dụ bên dưới

Thí dụ

dictionary = {'john':'1','alice':'90','rook':'45','emma':'22','roz':'11'} 
dictionary1 = sorted[dictionary]
sorted_dict = {key:dictionary[key] for key in dictionary1}
print[sorted_dict] 

 

đầu ra

{'alice': '90', 'emma': '22', 'john': '1', 'rook': '45', 'roz': '11'}

 

3] Sử dụng phương thức items[]

Chúng ta có thể sắp xếp từ điển bằng các khóa với sự trợ giúp của phương thức items[]. Chúng tôi gọi từ điển cho phương thức sorted[] và sau đó sử dụng từ điển. items[] để sắp xếp từ điển theo các phím như trong ví dụ bên dưới

Thí dụ

Dictionary:  {'A': 1, 'ABC': 3, 'ABCD': 4, 'AB': 2}
Sorted Dictionary by value:  {'A': 1, 'ABC': 2, 'ABCD': 3, 'AB': 4}
0

 

đầu ra

{'alice': '90', 'emma': '22', 'john': '1', 'rook': '45', 'roz': '11'}

 

Phần kết luận

Từ điển trong python thường được sử dụng để lưu trữ bộ sưu tập lớn dữ liệu được sắp xếp và ánh xạ chúng bằng các cặp khóa-giá trị. Sắp xếp từ điển trong python giúp truy xuất đầu ra mong muốn một cách hiệu quả và do đó, trong bài viết trên, chúng tôi đã đề cập đến các phương pháp khác nhau để sắp xếp từ điển trong python bằng cách sử dụng các khóa từ điển cũng như sử dụng các giá trị từ điển.  

Các khóa từ điển Python có duy trì trật tự không?

Vì từ điển trong Python 3. 5 không nhớ thứ tự các mục của họ, bạn không biết thứ tự trong từ điển được sắp xếp cho đến khi đối tượng được tạo. Kể từ thời điểm này, đơn hàng được duy trì . Kể từ Python 3. 6, các hàm giữ lại thứ tự của các đối số từ khóa được truyền trong một cuộc gọi.

Các khóa và giá trị chính tả của Python có được sắp xếp không?

Kể từ phiên bản Python 3. 7, từ điển được sắp xếp . Trong Trăn 3. 6 trở về trước, từ điển không có thứ tự.

Các giá trị dict có được sắp xếp không?

Từ điển vốn dĩ không có thứ tự , nhưng các loại khác, chẳng hạn như danh sách và bộ dữ liệu, thì không. Vì vậy, bạn cần một kiểu dữ liệu được sắp xếp để biểu thị các giá trị được sắp xếp, đây sẽ là một danh sách—có thể là một danh sách các bộ.

Phím dict có giữ trật tự không?

Các đối tượng dict tiêu chuẩn bảo toàn thứ tự trong triển khai tham chiếu [CPython] của Python 3. 5 và 3. 6 và thuộc tính giữ nguyên thứ tự này đang trở thành một tính năng ngôn ngữ trong Python 3. 7. Bạn có thể nghĩ rằng sự thay đổi này làm cho lớp OrderedDict trở nên lỗi thời.

Chủ Đề