Hướng dẫn can you loop through a dictionary python? - bạn có thể lặp lại một python từ điển không?
Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Bài viết từ điển Python: Lời khuyên & thủ thuật nâng cao This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Dictionary Iteration: Advanced Tips & Tricks Show
Từ điển là một trong những cấu trúc dữ liệu quan trọng và hữu ích nhất trong Python. Họ có thể giúp bạn giải quyết nhiều vấn đề lập trình. Hướng dẫn này sẽ đưa bạn đi sâu vào cách lặp đi lặp lại thông qua một từ điển ở Python. Đến cuối hướng dẫn này, bạn sẽ biết:
Để biết thêm thông tin về từ điển, bạn có thể kiểm tra các tài nguyên sau:
Sẳn sàng? Đi nào! Một vài từ về từ điểnTừ điển là một nền tảng của Python. Ngôn ngữ được xây dựng xung quanh từ điển. Các mô -đun, lớp, đối tượng, 9, 0: Tất cả đều là từ điển. Từ điển đã là trung tâm của Python ngay từ đầu.Tài liệu chính thức của Python, định nghĩa một từ điển như sau:
Có một vài điểm cần ghi nhớ:
Từ điển thường được sử dụng để giải quyết tất cả các loại vấn đề lập trình, vì vậy chúng là một phần cơ bản của bộ công cụ của bạn với tư cách là một nhà phát triển Python. Không giống như các chuỗi, là các vòng lặp hỗ trợ truy cập phần tử bằng cách sử dụng các chỉ số số nguyên, từ điển được lập chỉ mục bởi các khóa.sequences, which are iterables that support element access using integer indices, dictionaries are indexed by keys. Các phím trong từ điển giống như 3, đây là một tập hợp các đối tượng có thể băm và độc đáo. Bởi vì các đối tượng cần phải được băm, các đối tượng có thể thay đổi có thể được sử dụng làm khóa từ điển.Mặt khác, các giá trị có thể thuộc bất kỳ loại Python nào, cho dù chúng có thể băm hay không. Có nghĩa đen không có hạn chế cho các giá trị. Trong Python 3.6 và hơn thế nữa, các khóa và giá trị của từ điển được lặp lại theo cùng một thứ tự mà chúng được tạo ra. Tuy nhiên, hành vi này có thể thay đổi trên các phiên bản Python khác nhau và nó phụ thuộc vào lịch sử từ điển của các phần chèn và xóa. Trong Python 2.7, từ điển là các cấu trúc không có thứ tự. Thứ tự của các mặt hàng từ điển được tranh giành. Điều này có nghĩa là thứ tự của các mục là xác định và lặp lại. Hãy để xem một ví dụ:scrambled. This means that the order of the items is deterministic and repeatable. Let’s see an example: >>>
Nếu bạn rời khỏi thông dịch viên và mở một phiên tương tác mới sau đó, bạn sẽ nhận được cùng một đơn đặt hàng: >>>
Nếu bạn rời khỏi thông dịch viên và mở một phiên tương tác mới sau đó, bạn sẽ nhận được cùng một đơn đặt hàng: Nhìn kỹ hơn vào hai đầu ra này cho bạn thấy rằng thứ tự kết quả hoàn toàn giống nhau trong cả hai trường hợp. Đó là lý do tại sao bạn có thể nói rằng việc đặt hàng là xác định.randomized data structures. This means that every time you re-run the dictionary, you’ll get a different items order. Let’s take a look: >>>
Nếu bạn rời khỏi thông dịch viên và mở một phiên tương tác mới sau đó, bạn sẽ nhận được cùng một đơn đặt hàng: >>>
Nếu bạn rời khỏi thông dịch viên và mở một phiên tương tác mới sau đó, bạn sẽ nhận được cùng một đơn đặt hàng: Nhìn kỹ hơn vào hai đầu ra này cho bạn thấy rằng thứ tự kết quả hoàn toàn giống nhau trong cả hai trường hợp. Đó là lý do tại sao bạn có thể nói rằng việc đặt hàng là xác định.ordered data structures, which means that they keep their elements in the same order in which they were introduced, as you can see here: >>>
Nếu bạn rời khỏi thông dịch viên và mở một phiên tương tác mới sau đó, bạn sẽ nhận được cùng một đơn đặt hàng: Nhìn kỹ hơn vào hai đầu ra này cho bạn thấy rằng thứ tự kết quả hoàn toàn giống nhau trong cả hai trường hợp. Đó là lý do tại sao bạn có thể nói rằng việc đặt hàng là xác định. Trong Python 3.5, từ điển vẫn chưa được đặt hàng, nhưng lần này, các cấu trúc dữ liệu ngẫu nhiên. Điều này có nghĩa là mỗi khi bạn chạy lại từ điển, bạn sẽ nhận được một đơn đặt hàng khác nhau. Hãy để một cái nhìn:Nếu bạn nhập một phiên tương tác mới, thì bạn sẽ nhận được như sau: Khi nói đến việc lặp lại thông qua một từ điển trong Python, ngôn ngữ cung cấp cho bạn một số công cụ tuyệt vời mà chúng tôi sẽ đề cập trong bài viết này. Lặp lại qua các phím trực tiếpTừ điển Python sườn là các đối tượng lập bản đồ. Điều này có nghĩa là họ thừa hưởng một số phương pháp đặc biệt, mà Python sử dụng nội bộ để thực hiện một số hoạt động. Các phương thức này được đặt tên bằng cách sử dụng quy ước đặt tên là thêm một dấu gạch dưới kép vào đầu và ở cuối tên phương thức.special methods, which Python uses internally to perform some operations. These methods are named using the naming convention of adding a double underscore at the beginning of and at the end of the method’s name. Để trực quan hóa các phương thức và thuộc tính của bất kỳ đối tượng Python nào, bạn có thể sử dụng 4, đây là hàm tích hợp phục vụ mục đích đó. Nếu bạn chạy 4 với một từ điển trống làm đối số, thì bạn sẽ có thể xem tất cả các phương thức và thuộc tính mà từ điển thực hiện:>>>
Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:>>>
Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:Python đủ thông minh để biết rằng 0 là một từ điển và nó thực hiện 7. Trong ví dụ này, Python gọi 7 tự động và điều này cho phép bạn lặp lại các khóa của 0.>>>
Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 8, Python sẽ tự động gọi >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:Python đủ thông minh để biết rằng 0 là một từ điển và nó thực hiện 7. Trong ví dụ này, Python gọi 7 tự động và điều này cho phép bạn lặp lại các khóa của 0.>>>
Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:>>>
Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:>>> 0Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.>>> 1Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 8, Python sẽ tự động gọi >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:Python đủ thông minh để biết rằng 0 là một từ điển và nó thực hiện 7. Trong ví dụ này, Python gọi 7 tự động và điều này cho phép bạn lặp lại các khóa của 0.>>> 2Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:>>> 3Nếu bạn xem xét kỹ hơn về đầu ra trước đó, bạn sẽ thấy 6. Đây là một phương pháp được gọi là khi cần lặp lại cho một thùng chứa và nó sẽ trả về một đối tượng lặp mới có thể lặp qua tất cả các đối tượng trong container.Đối với ánh xạ (như từ điển), 7 nên lặp lại các khóa. Điều này có nghĩa là nếu bạn đặt một từ điển trực tiếp vào vòng lặp 8, Python sẽ tự động gọi 7 trên từ điển đó và bạn sẽ nhận được một trình lặp qua các khóa của nó:>>> 4Bằng cách này, bạn đã nhận được quyền truy cập vào các khóa ( 6) và các giá trị ( 7) của 0 cùng một lúc và bạn sẽ có thể thực hiện bất kỳ hành động nào đối với chúng.Lặp lại thông qua >>> for item in a_dict.items(): ... print(item) ... ('color', 'blue') ('fruit', 'apple') ('pet', 'dog') 7Nó cũng phổ biến chỉ sử dụng các giá trị để lặp lại thông qua từ điển trong Python. Một cách để làm điều đó là sử dụng 7, trả về chế độ xem với các giá trị của từ điển:>>> 5Trong mã trước, 9 giữ một tham chiếu đến đối tượng xem chứa các giá trị của 0.Như bất kỳ đối tượng xem nào, đối tượng được trả về bởi 7 cũng có thể được lặp lại. Trong trường hợp này, 7 mang lại các giá trị của 0:>>> 6Sử dụng 7, bạn sẽ chỉ nhận được quyền truy cập vào các giá trị của 0, mà không xử lý các khóa.Điều đáng chú ý là họ cũng hỗ trợ các bài kiểm tra thành viên ( 06), đây là một tính năng quan trọng nếu bạn đang cố gắng biết liệu một yếu tố cụ thể có nằm trong từ điển hay không:>>> 7Thử nghiệm thành viên sử dụng 06 trả về 08 nếu khóa (hoặc giá trị hoặc mục) có mặt trong từ điển mà bạn đang kiểm tra và trả về 09 nếu không. Bài kiểm tra thành viên cho phép bạn không lặp lại thông qua từ điển trong Python nếu bạn chỉ muốn biết liệu một số khóa (hoặc giá trị hoặc mục) nhất định có xuất hiện trong từ điển hay không.Sửa đổi các giá trị và khóaNó có thể khá phổ biến để cần sửa đổi các giá trị và khóa khi bạn lặp đi lặp lại thông qua một từ điển trong Python. Có một số điểm bạn sẽ cần phải tính đến để hoàn thành nhiệm vụ này. Ví dụ, các giá trị có thể được sửa đổi bất cứ khi nào bạn cần, nhưng bạn sẽ cần sử dụng từ điển gốc và khóa ánh xạ giá trị bạn muốn sửa đổi: >>> 8Trong ví dụ mã trước, để sửa đổi các giá trị của 10 và áp dụng giảm giá 10%, bạn đã sử dụng biểu thức 11.Vậy tại sao bạn phải sử dụng từ điển ban đầu nếu bạn có quyền truy cập vào khóa của nó ( 12) và các giá trị của nó ( 13)? Bạn có nên sửa đổi chúng trực tiếp không?Vấn đề thực sự là 12 và 13 thay đổi không được phản ánh trong từ điển ban đầu. Đó là, nếu bạn sửa đổi bất kỳ ai trong số họ ( 12 hoặc 13) trực tiếp bên trong vòng lặp, thì điều thực sự xảy ra là bạn sẽ mất tham chiếu đến thành phần từ điển có liên quan mà không thay đổi bất cứ điều gì trong từ điển.Mặt khác, các phím có thể được thêm hoặc xóa khỏi từ điển bằng cách chuyển đổi chế độ xem được trả về bởi 2 thành đối tượng 19:>>> 9Cách tiếp cận này có thể có một số ý nghĩa hiệu suất, chủ yếu liên quan đến tiêu thụ bộ nhớ. Ví dụ: thay vì đối tượng xem mang lại các yếu tố theo yêu cầu, bạn sẽ có một 19 hoàn toàn mới trong bộ nhớ hệ thống của bạn. Tuy nhiên, đây có thể là một cách an toàn để sửa đổi các khóa trong khi bạn lặp lại thông qua một từ điển trong Python.Cuối cùng, nếu bạn cố gắng xóa một khóa từ 10 bằng cách sử dụng trực tiếp 2, thì Python sẽ tăng 23 cho bạn biết rằng kích thước từ điển đã thay đổi trong quá trình lặp lại:>>> 0Điều này là do 2 trả về một đối tượng từ điển, mang lại các khóa theo yêu cầu một lần và nếu bạn xóa một mục ( 25), thì Python sẽ tăng 23, vì bạn đã sửa đổi từ điển trong quá trình lặp.Ví dụ trong thế giới thựcCho đến nay, bạn đã nhìn thấy những cách lặp đi lặp lại cơ bản hơn thông qua một từ điển trong Python. Bây giờ, thời gian để xem làm thế nào bạn có thể thực hiện một số hành động với các mục của từ điển trong quá trình lặp. Hãy cùng nhìn vào một số ví dụ trong thế giới thực. Biến các phím thành các giá trị và ngược lạiGiả sử bạn có một từ điển và vì một số lý do cần phải biến các khóa thành các giá trị và ngược lại. Trong tình huống này, bạn có thể sử dụng vòng lặp 8 để lặp qua từ điển và xây dựng từ điển mới bằng cách sử dụng các khóa làm giá trị và ngược lại:>>> 1Biểu thức 28 đã làm tất cả công việc cho bạn bằng cách biến các khóa thành các giá trị và sử dụng các giá trị làm khóa. Để mã này hoạt động, dữ liệu được lưu trữ trong các giá trị ban đầu phải thuộc loại dữ liệu có thể băm.Lọc các mụcĐôi khi, bạn sẽ ở trong các tình huống mà bạn có một từ điển và bạn muốn tạo một từ mới để chỉ lưu trữ dữ liệu thỏa mãn một điều kiện nhất định. Bạn có thể làm điều này với câu lệnh 29 bên trong vòng lặp 8 như sau:>>> 2Trong ví dụ này, bạn đã lọc ra các mục có giá trị lớn hơn 31. Bây giờ 32 chỉ chứa các mục đáp ứng điều kiện 33. Đây là một giải pháp khả thi cho loại vấn đề này. Sau đó, bạn sẽ thấy một cách pythonic và dễ đọc hơn để có được kết quả tương tự.Làm một số tính toánNó cũng phổ biến cần phải thực hiện một số tính toán trong khi bạn lặp lại thông qua một từ điển trong Python. Giả sử bạn đã lưu trữ dữ liệu cho doanh số của công ty bạn trong một từ điển và bây giờ bạn muốn biết tổng thu nhập của năm. Để giải quyết vấn đề này, bạn có thể xác định một biến có giá trị ban đầu là 0. Sau đó, bạn có thể tích lũy mọi giá trị của từ điển trong biến đó: >>> 3Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biếtSự hiểu biết từ điển là một cách nhỏ gọn để xử lý tất cả hoặc một phần của các yếu tố trong một bộ sưu tập và trả về một từ điển làm kết quả. Trái ngược với các toàn bộ danh sách, chúng cần hai biểu thức được phân tách bằng một dấu hai chấm sau đó là các điều khoản 8 và 29 (tùy chọn). Khi một sự hiểu biết từ điển được chạy, các cặp giá trị khóa kết quả được chèn vào một từ điển mới theo cùng một thứ tự mà chúng được sản xuất.dictionary comprehension is a compact way to process all or part of the elements in a collection and return a dictionary as a results. In contrast to list comprehensions, they need two expressions separated with a colon followed by 8 and
29 (optional) clauses. When a dictionary comprehension is run, the resulting key-value pairs are inserted into a new dictionary in the same order in which they were produced.Giả sử, ví dụ, bạn có hai danh sách dữ liệu và bạn cần tạo một từ điển mới từ họ. Trong trường hợp này, bạn có thể sử dụng Python từ 41 để lặp qua các yếu tố của cả hai danh sách trong các cặp:>>> 4Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biết Sự hiểu biết từ điển là một cách nhỏ gọn để xử lý tất cả hoặc một phần của các yếu tố trong một bộ sưu tập và trả về một từ điển làm kết quả. Trái ngược với các toàn bộ danh sách, chúng cần hai biểu thức được phân tách bằng một dấu hai chấm sau đó là các điều khoản >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 8 và >>> # Python 2.7. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 29 (tùy chọn). Khi một sự hiểu biết từ điển được chạy, các cặp giá trị khóa kết quả được chèn vào một từ điển mới theo cùng một thứ tự mà chúng được sản xuất.Giả sử, ví dụ, bạn có hai danh sách dữ liệu và bạn cần tạo một từ điển mới từ họ. Trong trường hợp này, bạn có thể sử dụng Python từ 41 để lặp qua các yếu tố của cả hai danh sách trong các cặp:
>>> 5Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biết Sự hiểu biết từ điển là một cách nhỏ gọn để xử lý tất cả hoặc một phần của các yếu tố trong một bộ sưu tập và trả về một từ điển làm kết quả. Trái ngược với các toàn bộ danh sách, chúng cần hai biểu thức được phân tách bằng một dấu hai chấm sau đó là các điều khoản >>> dir({}) ['__class__', '__contains__', '__delattr__', ... , '__iter__', ...] 8 và >>> # Python 2.7. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 29 (tùy chọn). Khi một sự hiểu biết từ điển được chạy, các cặp giá trị khóa kết quả được chèn vào một từ điển mới theo cùng một thứ tự mà chúng được sản xuất.Giả sử, ví dụ, bạn có hai danh sách dữ liệu và bạn cần tạo một từ điển mới từ họ. Trong trường hợp này, bạn có thể sử dụng Python từ 41 để lặp qua các yếu tố của cả hai danh sách trong các cặp:>>> 6Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biếtSự hiểu biết từ điển là một cách nhỏ gọn để xử lý tất cả hoặc một phần của các yếu tố trong một bộ sưu tập và trả về một từ điển làm kết quả. Trái ngược với các toàn bộ danh sách, chúng cần hai biểu thức được phân tách bằng một dấu hai chấm sau đó là các điều khoản 8 và 29 (tùy chọn). Khi một sự hiểu biết từ điển được chạy, các cặp giá trị khóa kết quả được chèn vào một từ điển mới theo cùng một thứ tự mà chúng được sản xuất.>>> 7Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biếtgenerator expression is an expression that returns an iterator. It looks like a list comprehension, but instead of brackets you need to use parentheses to define it: >>> 8Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Sử dụng sự hiểu biết >>> 9Ở đây, bạn đã lặp lại thông qua 34 và tích lũy tuần tự các giá trị của nó trong 35 như bạn muốn làm. Biểu thức 36 thực hiện phép thuật và ở cuối vòng lặp, bạn sẽ nhận được tổng thu nhập của năm. Lưu ý rằng 36 tương đương với 38.Loại bỏ các mặt hàng cụ thểBây giờ, giả sử bạn có một từ điển và cần phải tạo một cái mới với các khóa được chọn bị xóa. Hãy nhớ làm thế nào các đối tượng xem khóa giống như các bộ? Chà, những điểm tương đồng này vượt xa chỉ là bộ sưu tập các đối tượng có thể băm và độc đáo. Các đối tượng xem khóa cũng hỗ trợ các hoạt động chung 3. Hãy để xem cách bạn có thể tận dụng điều này để loại bỏ các mục cụ thể trong từ điển:>>> 0Mã này hoạt động vì các đối tượng quan điểm khóa hỗ trợ các hoạt động 3 như các công đoàn, giao lộ và sự khác biệt. Khi bạn đã viết 67 bên trong sự hiểu biết từ điển, bạn thực sự đã thực hiện một hoạt động khác biệt 3. Nếu bạn cần thực hiện bất kỳ hoạt động 3 nào với các khóa của từ điển, thì bạn chỉ có thể sử dụng đối tượng xem khóa trực tiếp mà không cần chuyển đổi nó thành 3. Đây là một tính năng ít được biết đến của các đối tượng xem khóa có thể hữu ích trong một số tình huống.Sắp xếp một từ điểnNó thường cần thiết để sắp xếp các yếu tố của một bộ sưu tập. Vì Python 3.6, từ điển được đặt hàng các cấu trúc dữ liệu, vì vậy nếu bạn sử dụng Python 3.6 (và hơn thế nữa), bạn sẽ có thể sắp xếp các mục của bất kỳ từ điển nào bằng cách sử dụng 71 và với sự trợ giúp của sự hiểu biết từ điển:>>> 1Mã này hoạt động vì các đối tượng quan điểm khóa hỗ trợ các hoạt động 3 như các công đoàn, giao lộ và sự khác biệt. Khi bạn đã viết 67 bên trong sự hiểu biết từ điển, bạn thực sự đã thực hiện một hoạt động khác biệt 3. Nếu bạn cần thực hiện bất kỳ hoạt động 3 nào với các khóa của từ điển, thì bạn chỉ có thể sử dụng đối tượng xem khóa trực tiếp mà không cần chuyển đổi nó thành 3. Đây là một tính năng ít được biết đến của các đối tượng xem khóa có thể hữu ích trong một số tình huống.Sắp xếp một từ điển Nó thường cần thiết để sắp xếp các yếu tố của một bộ sưu tập. Vì Python 3.6, từ điển được đặt hàng các cấu trúc dữ liệu, vì vậy nếu bạn sử dụng Python 3.6 (và hơn thế nữa), bạn sẽ có thể sắp xếp các mục của bất kỳ từ điển nào bằng cách sử dụng >>> # Python 2.7. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 71 và với sự trợ giúp của sự hiểu biết từ điển:Mã này cho phép bạn tạo một từ điển mới với các khóa của nó theo thứ tự được sắp xếp. Điều này là có thể bởi vì 72 trả về một danh sách các khóa được sắp xếp mà bạn có thể sử dụng để tạo từ điển mới 73.Để biết thêm thông tin về cách tinh chỉnh sắp xếp của bạn, hãy xem sắp xếp từ điển Python: giá trị, khóa, v.v. Lặp lại theo thứ tự sắp xếpĐôi khi bạn có thể cần lặp lại thông qua một từ điển trong Python nhưng muốn làm điều đó theo thứ tự được sắp xếp. Điều này có thể đạt được bằng cách sử dụng 71. Khi bạn gọi 75, bạn sẽ nhận được 19 với các yếu tố của 77 theo thứ tự được sắp xếp.>>> 2Mã này hoạt động vì các đối tượng quan điểm khóa hỗ trợ các hoạt động 3 như các công đoàn, giao lộ và sự khác biệt. Khi bạn đã viết 67 bên trong sự hiểu biết từ điển, bạn thực sự đã thực hiện một hoạt động khác biệt 3. Nếu bạn cần thực hiện bất kỳ hoạt động 3 nào với các khóa của từ điển, thì bạn chỉ có thể sử dụng đối tượng xem khóa trực tiếp mà không cần chuyển đổi nó thành 3. Đây là một tính năng ít được biết đến của các đối tượng xem khóa có thể hữu ích trong một số tình huống.Sắp xếp một từ điểnNó thường cần thiết để sắp xếp các yếu tố của một bộ sưu tập. Vì Python 3.6, từ điển được đặt hàng các cấu trúc dữ liệu, vì vậy nếu bạn sử dụng Python 3.6 (và hơn thế nữa), bạn sẽ có thể sắp xếp các mục của bất kỳ từ điển nào bằng cách sử dụng 71 và với sự trợ giúp của sự hiểu biết từ điển:Mã này cho phép bạn tạo một từ điển mới với các khóa của nó theo thứ tự được sắp xếp. Điều này là có thể bởi vì 72 trả về một danh sách các khóa được sắp xếp mà bạn có thể sử dụng để tạo từ điển mới 73.Để biết thêm thông tin về cách tinh chỉnh sắp xếp của bạn, hãy xem sắp xếp từ điển Python: giá trị, khóa, v.v. >>> 3Mã này hoạt động vì các đối tượng quan điểm khóa hỗ trợ các hoạt động 3 như các công đoàn, giao lộ và sự khác biệt. Khi bạn đã viết 67 bên trong sự hiểu biết từ điển, bạn thực sự đã thực hiện một hoạt động khác biệt 3. Nếu bạn cần thực hiện bất kỳ hoạt động 3 nào với các khóa của từ điển, thì bạn chỉ có thể sử dụng đối tượng xem khóa trực tiếp mà không cần chuyển đổi nó thành 3. Đây là một tính năng ít được biết đến của các đối tượng xem khóa có thể hữu ích trong một số tình huống.Sắp xếp một từ điển >>> 4Nó thường cần thiết để sắp xếp các yếu tố của một bộ sưu tập. Vì Python 3.6, từ điển được đặt hàng các cấu trúc dữ liệu, vì vậy nếu bạn sử dụng Python 3.6 (và hơn thế nữa), bạn sẽ có thể sắp xếp các mục của bất kỳ từ điển nào bằng cách sử dụng 71 và với sự trợ giúp của sự hiểu biết từ điển:Mã này cho phép bạn tạo một từ điển mới với các khóa của nó theo thứ tự được sắp xếp. Điều này là có thể bởi vì >>> # Python 2.7. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 72 trả về một danh sách các khóa được sắp xếp mà bạn có thể sử dụng để tạo từ điển mới >>> # Python 2.7. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 73.Để biết thêm thông tin về cách tinh chỉnh sắp xếp của bạn, hãy xem sắp xếp từ điển Python: giá trị, khóa, v.v. >>> 5Lặp lại theo thứ tự sắp xếp Đôi khi bạn có thể cần lặp lại thông qua một từ điển trong Python nhưng muốn làm điều đó theo thứ tự được sắp xếp. Điều này có thể đạt được bằng cách sử dụng 71. Khi bạn gọi 75, bạn sẽ nhận được 19 với các yếu tố của 77 theo thứ tự được sắp xếp.>>> 6Hãy để xem cách bạn có thể sử dụng 71 để lặp lại thông qua một từ điển trong Python khi bạn cần thực hiện theo thứ tự được sắp xếp.Lặp lại một cách phá hủy với ________ 214 ()Đôi khi bạn cần lặp lại thông qua một từ điển trong Python và xóa các mục của nó một cách tuần tự. Để thực hiện nhiệm vụ này, bạn có thể sử dụng 15, sẽ xóa và trả lại một cặp giá trị khóa tùy ý từ một từ điển. Mặt khác, khi bạn gọi 15 trên một từ điển trống, nó sẽ tăng một 17.Nếu bạn thực sự cần phải phá hủy một cách phá hủy thông qua một từ điển trong Python, thì 15 có thể hữu ích. Đây là một ví dụ: 7Ở đây, bạn đã sử dụng vòng lặp 19 thay vì vòng lặp 8. Lý do cho điều này là vì nó không bao giờ an toàn khi lặp lại thông qua một từ điển trong Python nếu bạn giả vờ sửa đổi nó theo cách này, nghĩa là, nếu bạn đang xóa hoặc thêm các mục vào nó.Bên trong vòng 19, bạn đã xác định một khối 22 để bắt 17 được nâng lên bởi 24 khi 0 trống. Trong khối 22, bạn xử lý từ điển, loại bỏ một mục trong mỗi lần lặp. Biến 27 giữ một tham chiếu đến các mục liên tiếp và cho phép bạn thực hiện một số hành động với chúng.Nếu bạn chạy tập lệnh này từ dòng lệnh của mình, thì bạn sẽ nhận được kết quả sau: 8Ở đây 15 đã loại bỏ tuần tự các mục của 0. Vòng lặp bị vỡ khi từ điển trở nên trống rỗng và 15 đã tăng ngoại lệ 17.Sử dụng một số chức năng tích hợp của Python,Python cung cấp một số chức năng tích hợp có thể hữu ích khi bạn làm việc với các bộ sưu tập, như từ điển. Các chức năng này là một loại công cụ lặp cung cấp cho bạn một cách khác để lặp lại thông qua một từ điển trong Python. Hãy cùng xem một số trong số họ. >>> # Python 3.6 and beyond >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} 7Python sườn 7 được định nghĩa là 34 và trả về một trình lặp lại áp dụng 35 cho mọi mục của 77, mang lại kết quả theo yêu cầu. Vì vậy, 7 có thể được xem như một công cụ lặp mà bạn có thể sử dụng để lặp lại thông qua một từ điển trong Python.Giả sử bạn có một từ điển chứa giá của một loạt các sản phẩm và bạn cần phải áp dụng giảm giá cho chúng. Trong trường hợp này, bạn có thể xác định một chức năng quản lý giảm giá và sau đó sử dụng nó làm đối số đầu tiên cho 7. Đối số thứ hai có thể là 39:>>> 9Ở đây, 7 lặp lại thông qua các mục của từ điển ( 39) để áp dụng giảm giá 5% cho mỗi loại trái cây bằng cách sử dụng 42. Trong trường hợp này, bạn cần sử dụng 43 để tạo từ điển 44 từ trình lặp được trả về bởi 7.Lưu ý rằng 42 trả về 5 của mẫu 48, trong đó 49 đại diện cho khóa và 50 đại diện cho giá trị mới.>>> # Python 3.6 and beyond >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} 8 8 là một chức năng tích hợp khác mà bạn có thể sử dụng để lặp lại thông qua từ điển trong Python và lọc ra một số mục của nó. Hàm này được định nghĩa là 53 và trả về một trình lặp lại từ các phần tử của 77 mà 35 trả về 08.Giả sử bạn muốn biết các sản phẩm có giá thấp hơn 57. Bạn cần xác định một hàm để xác định xem giá có thỏa mãn điều kiện đó hay không và chuyển nó như đối số đầu tiên cho 8. Đối số thứ hai có thể là 59:>>> 0Ở đây, 7 lặp lại thông qua các mục của từ điển ( 39) để áp dụng giảm giá 5% cho mỗi loại trái cây bằng cách sử dụng 42. Trong trường hợp này, bạn cần sử dụng 43 để tạo từ điển 44 từ trình lặp được trả về bởi 7.Lưu ý rằng >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 42 trả về >>> for key in a_dict: ... print(key, '->', a_dict[key]) ... color -> blue fruit -> apple pet -> dog 5 của mẫu >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 48, trong đó >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 49 đại diện cho khóa và >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 50 đại diện cho giá trị mới. 8 là một chức năng tích hợp khác mà bạn có thể sử dụng để lặp lại thông qua từ điển trong Python và lọc ra một số mục của nó. Hàm này được định nghĩa là 53 và trả về một trình lặp lại từ các phần tử của 77 mà 35 trả về 08.Giả sử bạn muốn biết các sản phẩm có giá thấp hơn 57. Bạn cần xác định một hàm để xác định xem giá có thỏa mãn điều kiện đó hay không và chuyển nó như đối số đầu tiên cho 8. Đối số thứ hai có thể là 59:>>> 1Ở đây, 7 lặp lại thông qua các mục của từ điển ( 39) để áp dụng giảm giá 5% cho mỗi loại trái cây bằng cách sử dụng 42. Trong trường hợp này, bạn cần sử dụng 43 để tạo từ điển 44 từ trình lặp được trả về bởi 7.Lưu ý rằng 42 trả về 5 của mẫu 48, trong đó 49 đại diện cho khóa và 50 đại diện cho giá trị mới.>>> 2Trong trường hợp này, bạn đã gọi 9 trên đối tượng 70. Đối tượng 70 hoạt động như thể nó là một từ điển thông thường và 9 đã trả về một đối tượng chế độ xem từ điển có thể được lặp lại như bình thường.Sử dụng >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 85Python sườn 85 là một mô -đun cung cấp một số công cụ hữu ích để thực hiện các tác vụ lặp. Hãy cùng xem cách bạn có thể sử dụng một số trong số chúng để lặp lại thông qua một từ điển trong Python.Lặp đi lặp theo chu kỳ với >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 87Giả sử bạn muốn lặp lại thông qua một từ điển trong Python, nhưng bạn cần lặp lại qua nó liên tục trong một vòng lặp duy nhất. Để hoàn thành nhiệm vụ này, bạn có thể sử dụng 88, điều này tạo ra một trình lặp trả về các phần tử từ 77 và lưu một bản sao của mỗi phần. Khi 77 cạn kiệt, 87 trả về các phần tử từ bản sao đã lưu. Điều này được thực hiện theo kiểu theo chu kỳ, vì vậy, bạn sẽ dừng chu kỳ.Trong ví dụ sau, bạn sẽ lặp đi lặp lại thông qua các mục của từ điển ba lần liên tiếp: >>> 3Mã trước cho phép bạn lặp lại thông qua 10 một số lần nhất định ( 93 trong trường hợp này). Chu kỳ này có thể miễn là bạn cần, nhưng bạn có trách nhiệm ngăn chặn nó. Điều kiện 29 phá vỡ chu kỳ khi 95 đếm xuống bằng không.Xếp vòng lặp với >>> # Python 3.5 >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} >>> a_dict {'color': 'blue', 'pet': 'dog', 'fruit': 'apple'} 96 85 cũng cung cấp 98, nhận được một số 99 làm đối số và tạo ra một trình lặp lại mang lại các phần tử từ lần đầu tiên có thể sử dụng được cho đến khi nó cạn kiệt, sau đó lặp đi lặp lại tiếp theo, cho đến khi tất cả chúng bị kiệt sức.Điều này cho phép bạn lặp lại qua nhiều từ điển trong một chuỗi, thích những gì bạn đã làm với 68:>>> 4Trong mã trên, 96 đã trả về một số ít kết hợp các mục từ 02 và 03.Nó cũng có thể sử dụng 2 hoặc 7, tùy thuộc vào nhu cầu của bạn, với điều kiện đồng nhất: Nếu bạn sử dụng 2 cho một đối số với 96, thì bạn cần sử dụng 2 cho phần còn lại của chúng.Sử dụng toán tử giải nén từ điển (>>> # Python 3.5. New interactive session >>> a_dict = {'color': 'blue', 'fruit': 'apple', 'pet': 'dog'} >>> a_dict {'fruit': 'apple', 'pet': 'dog', 'color': 'blue'} >>> a_dict {'fruit': 'apple', 'pet': 'dog', 'color': 'blue'} 09)Python 3,5 mang đến một tính năng mới và thú vị. PEP 448 - Các khái quát hóa việc giải nén bổ sung có thể giúp cuộc sống của bạn dễ dàng hơn khi lặp đi lặp lại thông qua nhiều từ điển trong Python. Hãy cùng xem cách thức hoạt động của nó với một ví dụ ngắn. Giả sử bạn có hai (hoặc nhiều) từ điển, và bạn cần lặp lại thông qua chúng cùng nhau, mà không cần sử dụng 68 hoặc 11, như bạn đã thấy trong các phần trước. Trong trường hợp này, bạn có thể sử dụng toán tử giải nén từ điển ( 09) để hợp nhất hai từ điển thành một từ mới và sau đó lặp lại thông qua nó:>>> 5Nhà điều hành giải nén từ điển ( 09) thực sự là một tính năng tuyệt vời trong Python. Nó cho phép bạn hợp nhất nhiều từ điển thành một từ mới, như bạn đã làm trong ví dụ với 03 và 02. Khi bạn đã hợp nhất các từ điển với toán tử giải nén, bạn có thể lặp lại thông qua từ điển mới như bình thường.Điều quan trọng cần lưu ý là nếu các từ điển mà bạn đang cố gắng hợp nhất có các khóa lặp đi lặp lại hoặc thông thường, thì các giá trị của từ điển bên phải sẽ chiếm ưu thế: >>> 6Khóa 16 có mặt trong cả hai từ điển. Sau khi bạn hợp nhất chúng, giá trị 02 cho 16 ( 19) đã chiếm ưu thế, bởi vì 02 là từ điển phù hợp nhất.Sự kết luậnBây giờ bạn đã biết những điều cơ bản về cách lặp lại thông qua một từ điển trong Python, cũng như một số kỹ thuật và chiến lược nâng cao hơn! Bạn đã học:
Bạn có các công cụ và kiến thức mà bạn sẽ cần để tận dụng tối đa từ điển trong Python. Điều này sẽ giúp bạn hiệu quả và hiệu quả hơn trong việc sử dụng phép lặp từ điển trong tương lai. Xem bây giờ hướng dẫn này có một khóa học video liên quan được tạo bởi nhóm Python thực sự. Xem nó cùng với hướng dẫn bằng văn bản để hiểu sâu hơn về sự hiểu biết của bạn: Bài viết từ điển Python: Lời khuyên & thủ thuật nâng cao This tutorial has a related video course created by the Real Python team. Watch it together with the written tutorial to deepen your understanding: Python Dictionary Iteration: Advanced Tips & Tricks Bạn có thể lặp qua một từ điển trong Python không?Bạn có thể lặp qua một từ điển bằng cách sử dụng một vòng lặp. Khi lặp qua từ điển, giá trị trả về là các khóa của từ điển, nhưng cũng có các phương pháp để trả về các giá trị.. When looping through a dictionary, the return value are the keys of the dictionary, but there are methods to return the values as well.
Làm thế nào để chúng ta lặp lại thông qua một từ điển?Có nhiều cách để lặp lại một từ điển trong Python ... Khóa truy cập bằng cách sử dụng bản dựng .KEYS (). Khóa truy cập mà không cần sử dụng phím (). Lặp lại thông qua tất cả các giá trị bằng cách sử dụng .Values (). Lặp lại thông qua tất cả các khóa và các cặp giá trị bằng cách sử dụng các mục (). Truy cập cả khóa và giá trị mà không cần sử dụng các mục (). In các mục trong giá trị khóa theo cặp .. Một khóa từ điển có thể lặp lại không?Từ điển Python không cho phép khóa lặp lại.Tuy nhiên, chúng ta có thể sử dụng DefaultDict để tìm cách giải quyết.. However, we can use defaultdict to find a workaround.
Một từ điển có thể có các giá trị lặp đi lặp lại?Câu trả lời thẳng là không.Bạn không thể có các khóa trùng lặp trong một từ điển trong Python.Nhưng chúng ta có thể có một hiệu ứng tương tự như giữ các khóa trùng lặp trong từ điển.You can not have duplicate keys in a dictionary in Python. But we can have a similar effect as keeping duplicate keys in dictionary.
Có lặp đi lặp lại thông qua một từ điển nhanh hơn một danh sách?Khi nói đến 10.000.000 mặt hàng, tra cứu từ điển có thể nhanh hơn 585714 lần so với tra cứu danh sách.6.6 hoặc 585714 chỉ là kết quả của việc chạy thử nghiệm đơn giản với máy tính của tôi.a dictionary lookup can be 585714 times faster than a list lookup. 6.6 or 585714 are just the results of a simple test run with my computer. |