Đặt hàng dict Python

Chúng ta có thể sắp xếp danh sách, bộ dữ liệu, chuỗi và các đối tượng có thể lặp lại khác trong python vì chúng đều là các đối tượng được sắp xếp. Chà, kể từ python 3. 7, từ điển cũng nhớ thứ tự các mục được chèn. Do đó, chúng ta cũng có thể sắp xếp từ điển bằng hàm sorted[] tích hợp sẵn của python. Cũng giống như các iterable khác, chúng ta có thể sắp xếp từ điển dựa trên các tiêu chí khác nhau tùy thuộc vào đối số chính của hàm sorted[]

Trong hướng dẫn này, chúng ta sẽ tìm hiểu cách sắp xếp từ điển bằng hàm sorted[] trong python

hàm sắp xếp []

Hàm sorted[] có thể chấp nhận ba tham số. iterable, key, và reverse

đã sắp xếp [có thể lặp lại, khóa, đảo ngược]

Trái ngược với phương thức sort[] chỉ hoạt động trên danh sách, hàm sorted[] có thể hoạt động trên bất kỳ lần lặp nào, chẳng hạn như danh sách, bộ dữ liệu, từ điển, v.v. Tuy nhiên, không giống như phương thức sort[] trả về Không và sửa đổi danh sách ban đầu, hàm sorted[] trả về một danh sách mới trong khi không thay đổi đối tượng ban đầu

Ghi chú. Bất kể iterable nào được chuyển vào hàm sorted[], nó luôn trả về một danh sách

Sắp xếp một từ điển

Từ điển được tạo thành từ khóa. cặp giá trị. Do đó, chúng có thể được sắp xếp theo khóa hoặc theo giá trị

Giả sử rằng chúng ta có một từ điển, với khóa là tên và giá trị là tuổi

dictionary_of_names = {'beth': 37, 
'jane': 32,
'john': 41,
'mike': 59
}

Nếu chúng ta chỉ chuyển toàn bộ từ điển dưới dạng có thể lặp lại cho hàm sorted[], chúng ta sẽ nhận được đầu ra sau

print[sorted[dictionary_of_names]]
# ['beth', 'jane', 'john', 'mike']

Như chúng ta có thể thấy, nếu chúng ta chuyển toàn bộ từ điển dưới dạng có thể lặp lại cho hàm sorted[], nó sẽ trả về một danh sách chỉ chứa các khóa được sắp xếp theo thứ tự bảng chữ cái

Sắp xếp danh sách trong Python

Cách sử dụng sort[] và sorted[] để sắp xếp danh sách trong python

hướng tới khoa học dữ liệu. com

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

Nếu chúng ta muốn lấy một bản sao đã được sắp xếp của toàn bộ từ điển, chúng ta cần sử dụng phương thức dictionary items[]

print[dictionary_of_names.items[]]
# dict_items[[['beth', 37], ['jane', 32], ['john', 41], ['mike', 59]]]

Lưu ý cách phương thức items[] trả về một đối tượng dict_items, trông giống như một danh sách các bộ dữ liệu. Đối tượng dict_items này có thể lặp lại. Do đó, nó có thể được chuyển vào dưới dạng có thể lặp lại cho hàm sorted[]

Chúng ta có thể sắp xếp đối tượng dict_items này giống như cách chúng ta sắp xếp danh sách các bộ đã thấy trước đó. Ví dụ: để sắp xếp theo phần tử thứ hai trong mỗi bộ, sẽ là tuổi, chúng ta có thể sử dụng đoạn mã sau

sorted_age = sorted[dictionary_of_names.items[], key = lambda kv: kv[1]]print[sorted_age]
# [['jane', 32], ['beth', 37], ['john', 41], ['mike', 59]]

Lưu ý cách hàm sorted[] trả về một danh sách các bộ, được sắp xếp theo độ tuổi [hoặc phần tử thứ hai trong mỗi bộ]. Để chuyển đổi danh sách các bộ dữ liệu này thành một từ điển, chúng ta có thể sử dụng hàm dict[] tích hợp sẵn

sorted_dictionary = dict[sorted_age]print[sorted_dictionary]
# {'jane': 32, 'beth': 37, 'john': 41, 'mike': 59}

Bây giờ chúng tôi có một từ điển được sắp xếp theo độ tuổi

Ví dụ- Đếm số trong danh sách

Giả sử rằng chúng ta muốn tạo một hàm mà khi được truyền vào một danh sách các số, sẽ trả về một từ điển được sắp xếp có chứa các số và số lượng của chúng theo thứ tự tăng dần. Do đó, chúng ta có thể có các khóa của từ điển là các phần tử [hoặc số] khác nhau trong danh sách và các giá trị tương ứng của chúng bằng số lần phần tử [hoặc số] cụ thể đó xuất hiện trong danh sách

Chà, chúng ta có thể hoàn thành nhiệm vụ này với chức năng sau

nums = [1,1,7,3,5,3,2,9,5,1,3,2,2,2,2,2,9]def count[num_list]:
count_dict = {}
for num in num_list:
count_dict[num] = num_list.count[num]
return dict[sorted[count_dict.items[], key=lambda x:x[1]]]
print[count[nums]]# {7: 1, 5: 2, 9: 2, 1: 3, 3: 3, 2: 6}

Đầu tiên chúng ta định nghĩa hàm count[] với một tham số, num_list. Trong hàm, trước tiên chúng ta tạo một từ điển trống, count_dict. Sau đó, khi chúng ta lặp qua num_list, đây sẽ là danh sách được truyền dưới dạng đối số cho hàm, sử dụng vòng lặp for, chúng ta đang tạo khóa. cặp giá trị trong count_dict. Khóa sẽ bằng số hiện tại mà chúng ta đang sử dụng trong khi lặp qua num_list và giá trị tương ứng của nó bằng với số lượng của số đó trong num_list. Cuối cùng, chúng tôi trả về từ điển đã sắp xếp

Count[] là một phương thức danh sách trả về số lần giá trị chúng ta truyền vào xuất hiện trong danh sách của chúng ta

Sử dụng hiểu từ điển

Chúng ta có thể rút ngắn chức năng này hơn nữa bằng cách sử dụng khả năng hiểu từ điển để tạo từ điển count_dict thay vì vòng lặp for

def count[num_list]:
count_dict = {num:num_list.count[num] for num in num_list}
return dict[sorted[count_dict.items[], key=lambda x:x[1]]]

Chúng tôi sử dụng dấu ngoặc nhọn để xác định rằng chúng tôi muốn tạo từ điển [trái ngược với danh sách mà chúng tôi sẽ sử dụng dấu ngoặc trong cách hiểu danh sách]. Sau đó, khi chúng tôi lặp qua num_list, chúng tôi đang tạo khóa. các cặp giá trị như sau. con số. num_list. đếm [num], trong đó khóa là số [hoặc num] và giá trị của nó là số đếm của số đó trong num_list

Chúng ta có thể rút ngắn chức năng này xuống chỉ còn một dòng mã bằng cách sử dụng phương thức items[] trực tiếp trên phần hiểu từ điển

def count[num_list]:
return dict[sorted[{num:num_list.count[num] for num in num_list}.items[], key=lambda x:x[1]]]

Để biết thêm thông tin về cách hiểu từ điển, hãy xem phần sau

Từ điển hiểu trong Python

Cách sử dụng khả năng hiểu từ điển để tạo từ điển trong python

hướng tới khoa học dữ liệu. com

Nếu bạn thích đọc những câu chuyện như thế này và muốn hỗ trợ tôi với tư cách là một nhà văn, hãy cân nhắc đăng ký để trở thành thành viên Medium. Đó là 5 đô la một tháng, cho phép bạn truy cập không giới hạn vào các câu chuyện trên Phương tiện. Nếu bạn đăng ký bằng liên kết của tôi, tôi sẽ kiếm được một khoản hoa hồng nhỏ

Tham gia Medium với liên kết giới thiệu của tôi — Luay Matalka

Đọc mọi câu chuyện từ Luay Matalka [và hàng nghìn nhà văn khác trên Medium]. Phí thành viên của bạn hỗ trợ trực tiếp…

lamtalka90. vừa phải. com

Sự kết luận

Trong hướng dẫn này, chúng tôi đã xem xét ngắn gọn hàm sorted[]. Chúng ta đã học cách hàm sorted[] hoạt động trên bất kỳ đối tượng có thể lặp lại nào [không sửa đổi nó] và trả về một danh sách mới, nhưng phương thức sort[] chỉ hoạt động trên danh sách và sửa đổi chúng tại chỗ và trả về Không có. Cuối cùng, chúng ta đã thấy cách chúng ta có thể sử dụng hàm sorted[] để sắp xếp từ điển trong python

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

Khám phá lại thứ tự từ điển trong Python . 6, từ điển vốn đã không có thứ tự Before Python 3.6, dictionaries were inherently unordered . Từ điển Python là một triển khai của bảng băm, theo truyền thống là cấu trúc dữ liệu không có thứ tự.

Bạn có thể sắp xếp một dict theo thứ tự?

Để sắp xếp chính xác một từ điển theo giá trị bằng phương thức sorted[], bạn sẽ phải làm như sau. chuyển từ điển sang phương thức sorted[] làm giá trị đầu tiên. sử dụng phương thức items[] trên từ điển để truy xuất các khóa và giá trị của nó. viết hàm lambda để lấy các giá trị được truy xuất bằng phương thức item[]

OrderedDict có lỗi thời không?

Không, nó sẽ không trở nên dư thừa trong Python 3. 7 vì OrderedDict không chỉ là lệnh giữ lại thứ tự chèn, nó còn cung cấp một phương thức phụ thuộc vào thứ tự, OrderedDict. move_to_end[] và hỗ trợ phép lặp Reverse[]*.

Thứ tự có được đảm bảo trong Python dict không?

Có, đơn hàng đó được đảm bảo nếu đơn hàng đó không bị sửa đổi .

Chủ Đề