Computer >> Máy Tính >  >> Lập trình >> Python

Từ điển lồng nhau trong Python:Hướng dẫn cách thực hiện

Từ điển lồng nhau trong Python là một từ điển nằm trong một từ điển khác. Điều này cho phép bạn lưu trữ dữ liệu bằng cách sử dụng cấu trúc ánh xạ khóa-giá trị trong từ điển hiện có.

Khi làm việc với các từ điển bằng Python, bạn có thể gặp phải tình huống trong đó một từ điển chứa một từ điển khác.

Cấu trúc dữ liệu này thường được gọi là từ điển lồng nhau, và có nhiều trường hợp sử dụng tiềm năng trong mã Python.

Hướng dẫn này sẽ thảo luận về những điều cơ bản của từ điển lồng nhau trong Python. Chúng tôi sẽ giới thiệu cho các bạn một vài ví dụ để bạn có thể tìm hiểu cách tạo và sửa đổi một từ điển lồng nhau.

Trình làm mới từ điển Python

Từ điển là kiểu dữ liệu ánh xạ của Python. Từ điển Python liên kết — hoặc bản đồ —Các phím đến các giá trị và cung cấp một cách lưu trữ dữ liệu hiệu quả.

Khi một khóa được ánh xạ tới một giá trị, bạn có thể truy xuất dữ liệu được lưu trữ trong giá trị đó bằng cách tham chiếu đến khóa. Vì vậy, theo một nghĩa nào đó, khóa hoạt động giống như một nhãn. Dưới đây là một ví dụ về từ điển lưu trữ giá của các hương vị kem được bán tại một cửa hàng kem địa phương, The Frozen Spoon:

 ice_cream_flavors ={"Vani":0,50, "Sô cô la":0,50, "Bánh quy và kem":0,75, "Dâu tây":0,65, "Hồ đào bơ":0,90} 

Chìa khóa trong từ điển này là tên của các loại kem của chúng tôi (tức là “Vani”) và các giá trị là giá trên mỗi muỗng kem.

Từ điển lồng nhau trong Python

Các từ điển lồng nhau trong Python là các từ điển bên trong một từ điển. Chúng được sử dụng để đại diện cho dữ liệu từ điển trong một từ điển khác. Bạn có thể lồng bao nhiêu từ điển vào một từ điển tùy thích.

81% người tham gia cho biết họ cảm thấy tự tin hơn về triển vọng công việc công nghệ của mình sau khi tham gia một cuộc thi đào tạo. Kết hợp với bootcamp ngay hôm nay.

Sinh viên tốt nghiệp bootcamp trung bình đã dành ít hơn sáu tháng để chuyển đổi nghề nghiệp, từ khi bắt đầu bootcamp đến khi tìm được công việc đầu tiên của họ.

Từ điển lồng nhau rất hữu ích nếu bạn muốn lưu trữ nhiều loại từ điển thành phần trong một từ điển lớn.

Hãy xem qua một ví dụ để minh họa cách hoạt động của các từ điển lồng nhau. Giả sử chúng ta muốn tạo một từ điển lưu trữ từ điển về từng hương vị của kem được bán tại The Frozen Spoon. Mỗi từ điển trong từ điển lớn của chúng tôi nên liệt kê:

  • Tên của kem
  • Giá của nó
  • Còn bao nhiêu panh trong kho

Đây là từ điển lồng nhau lưu trữ dữ liệu này sẽ trông như thế nào:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} 

Trong mã của chúng tôi, chúng tôi đã khai báo một từ điển lớn có tên là ice_cream_flavors . Từ điển này chứa ba từ điển, mỗi từ điển lưu trữ thông tin về một hương vị kem cụ thể.

Nếu chúng tôi không sử dụng từ điển lồng nhau, chúng tôi sẽ phải lưu trữ từng từ điển này trong các biến riêng biệt. Điều này là phản trực giác vì mỗi từ điển lưu trữ thông tin về hương vị kem.

Truy cập các mục trong từ điển lồng nhau

Để truy cập một mục trong từ điển lồng nhau, chúng ta có thể sử dụng cú pháp lập chỉ mục.

Giả sử chúng ta muốn truy xuất giá của kem với giá trị chỉ mục 0 trong từ điển của chúng ta. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} print (ice_cream_flavors [0] ["price"]) print (ice_cream_flavors [0] [" hương vị "]) 

Mã của chúng tôi trả về:

 0,50 Vanilla 

Trong mã này, trước tiên chúng tôi chỉ định khóa mục có giá trị trong từ điển lớn của chúng tôi mà chúng tôi muốn truy xuất. Trong trường hợp này, chúng tôi muốn truy cập bản ghi với giá trị chỉ mục 0.

Sau đó, chúng tôi chỉ định tên của mục trong từ điển bên trong mà chúng tôi muốn truy xuất. Trong trường hợp này, chúng tôi muốn truy xuất giá kem và hương vị. Vì vậy, chúng tôi đã chỉ định giá hương vị trong cả print () của chúng tôi tuyên bố.

Python từ điển lồng nhau:Thêm phần tử

Để thêm một phần tử vào từ điển lồng nhau, chúng ta có thể sử dụng cùng một cú pháp mà chúng ta đã sử dụng để sửa đổi một mục. Không có phương pháp nào bạn nên sử dụng để thêm một mục vào từ điển lồng nhau. Bạn cần sử dụng toán tử gán.

Cú pháp để thêm một mục như sau:

 dictionary_name [new_key_name] =new_value 

Giả sử chúng ta có một từ điển lưu trữ thông tin về một loại kem vani được bán. Chúng tôi muốn theo dõi xem có giảm giá kem hay không. Chúng tôi có thể làm điều này bằng cách sử dụng mã sau:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} ice_cream_flavors [0] ["discount"] =Trueprint (ice_cream_flavors [0]) 

Hãy chạy mã của chúng tôi và xem điều gì sẽ xảy ra:

 {'flavour':'Vanilla', 'price':0.5, 'pints':20, 'discount':True} 

Từ điển của chúng tôi được lưu trữ trong biến Python “ice_cream_flavors”.

Chúng tôi đã thêm một khóa có tên là chiết khấu vào từ điển. Vị trí chỉ mục của khóa này là 0. Chúng tôi đặt giá trị của khóa này thành True. Sau đó, chúng tôi in từ điển với giá trị chỉ mục 0 trong ice_cream_flavors của chúng tôi từ điển lồng nhau. Điều này cho thấy rằng chiết khấu của chúng tôi khóa đã được thêm.

Chúng ta có thể sử dụng cú pháp này để cập nhật một phần tử trong từ điển hiện có. Giả sử chúng tôi muốn thay đổi giá kem sô cô la là 0,45 đô la cho mỗi muỗng. Chúng tôi có thể làm như vậy bằng cách sử dụng mã này:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} ice_cream_flavors [1] ["price"] =0,45print (ice_cream_flavors [1])  

Mã của chúng tôi trả về:

 {'flavour':'Sô cô la', 'price':0,45, 'pints':31} 

Chúng tôi đã thay đổi giá trị của giá chìa khóa cho món kem sô cô la của chúng tôi là $ 0,45.

Để làm như vậy, chúng tôi đã chỉ định giá trị chỉ mục của từ điển có giá giá trị chúng tôi muốn thay đổi là 1. Giá trị này chứa thông tin về các loại kem sô cô la trong từ điển của chúng tôi. Sau đó, chúng tôi đã chỉ định một giá trị mới cho giá phím.

Từ điển lồng nhau Python:Xóa phần tử

Để xóa một mục được lưu trữ trong từ điển lồng nhau, chúng tôi có thể sử dụng del tuyên bố. Câu lệnh del cho phép bạn xóa một đối tượng. del được viết giống như một câu lệnh ngắt trong Python, trên dòng riêng của nó, theo sau là mục trong từ điển mà bạn muốn xóa.

Giả sử chúng tôi tạm thời không cung cấp bánh quy và kem kem tại cửa hàng của mình nữa. Tủ đông bảo quản bánh quy và kem của chúng tôi đã ngừng hoạt động và hàng hóa bị tan chảy.

Chúng tôi có thể xóa món kem này khỏi từ điển lồng nhau của mình bằng mã sau:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} del ice_cream_flavors [2] print (ice_cream_flavors) 

Mã của chúng tôi trả về:

 {0:{'flavour':'Vanilla', 'price':0.5, 'pints':20}, 1:{'flavour':'Chocolate', 'price':0.5, 'pints':31 }} 

Trong mã của chúng tôi, chúng tôi đã sử dụng del câu lệnh xóa giá trị trong từ điển lồng nhau của chúng tôi có khóa bằng 2. Như bạn có thể thấy, điều này đã xóa mục nhập cho Cookies and Cream từ từ điển lồng nhau của chúng tôi.

Lặp lại qua từ điển lồng nhau trong Python

Bây giờ, giả sử chúng ta muốn in ra nội dung của từng từ điển trong từ điển lồng nhau của chúng ta vào bảng điều khiển. Làm thế nào chúng ta có thể hoàn thành nhiệm vụ này?

Đó là một câu hỏi tuyệt vời. Để in ra nội dung của từ điển lồng nhau của chúng ta, chúng ta có thể lặp lại nó bằng cách sử dụng vòng lặp Python for. Chúng tôi cũng sẽ sử dụng phương thức từ điển Python items () để truy xuất danh sách các khóa và giá trị trong từ điển của chúng tôi:

 ice_cream_flavors ={0:{"flavour":"Vani", "price":0,50, "pints":20}, 1:{"flavour":"Chocolate", "price":0,50, "pints" :31}, 2:{"flavour":"Cookies and Cream", "price":0,75, "pints":14}} cho khóa, giá trị trong ice_cream_flavors.items ():print ("Ice Cream:", key ) cho k, v trong value.items ():print (k + ":", value [k]) 

Mã của chúng tôi trả về:

 Kem:0 vị:Vanillaprice:0,5 vị:20 Vị kem:1 vị:Vị sô cô la:0,5 vị:31 Vị kem:2 vị:Cookies và Creamprice:0,75 vị:14 

Hãy chia nhỏ mã của chúng ta. Đầu tiên, chúng tôi đã xác định từ điển lồng nhau về hương vị kem.

Sau đó, chúng tôi đã xác định một vòng lặp for đi qua từng khóa và giá trị trong ice_cream_flavors từ điển. Vòng lặp này sử dụng .items () để tạo danh sách tất cả các khóa và giá trị trong ice_cream_flavors của chúng tôi từ điển, qua đó vòng lặp có thể lặp lại.

Sau đó, chúng tôi in Kem: theo sau là khóa liên quan đến một loại kem cụ thể.

Tiếp theo, chúng tôi sử dụng một vòng lặp for khác để lặp lại mọi mục trong mỗi giá trị trong từ điển lồng nhau của chúng tôi. Điều này đề cập đến từng mục nhập bên trong trong từ điển lồng nhau của chúng tôi (chẳng hạn như các mục nhập cho vani và sô cô la). Vòng lặp này in ra tên của mỗi khóa trong từ điển bên trong của chúng tôi, theo sau là dấu hai chấm, sau đó là giá trị được liên kết với khóa đó.

Kết luận

Các từ điển lồng nhau cho phép bạn lưu trữ các từ điển bên trong một từ điển bằng Python.

Hướng dẫn này đã thảo luận, có tham chiếu đến các ví dụ, cách:

  • Tạo một từ điển lồng nhau
  • Thêm các phần tử vào và cập nhật các phần tử trong từ điển lồng nhau
  • Xóa các phần tử khỏi từ điển lồng nhau
  • Lặp lại thông qua một từ điển lồng nhau

Để tìm hiểu thêm về cách viết mã bằng Python, hãy đọc hướng dẫn Cách viết mã bằng Python của chúng tôi.