Một đối tượng dict có thể có bất kỳ kiểu kết hợp dữ liệu nào làm giá trị của nó, bao gồm cả các đối tượng dict khác. Nói cách khác, bạn có thể có một từ điển của từ điển chẳng hạn như từ điển bên dưới
# The 100m medal winners at the Tokyo 2020 Olympics
athletics = {
'100m': {
'Men': {
'Gold': 'Marcell Jacobs',
'Silver': 'Fred Kerley',
'Bronze': 'Andre De Grasse'
},
'Women': {
'Gold': 'Elaine Thompson-Herah',
'Silver': 'Shelly-Ann Fraser-Pryce',
'Bronze': 'Shericka Jackson'
}
}
}
Đây là một cách lưu trữ dữ liệu khá hữu ích vì nó logic. để biết tên của người đoạt huy chương vàng ở nội dung 100m nam, bạn có thể tra cứu
## Marcell Jacobs
6 > ## Marcell Jacobs
7 > ## Marcell Jacobs
8 như hình bên dướiprint[athletics['100m']['Men']['Gold']]
## Marcell Jacobs
Thêm một mục khác [khóa + giá trị] vào một từ điển lồng nhau bằng cách lập chỉ mục một khóa chưa tồn tại và gán một giá trị cho nó
# Add a key-value pair to the nested dictionary
athletics['100m']['Women']['Fourth'] = 'Marie-Josée Ta Lou'
Thêm một từ điển khác vào một từ điển lồng nhau theo cách tương tự
# The 200m medal winners at the Tokyo 2020 Olympics
results200m = {
'Men': {
'Gold': 'Andre De Grasse',
'Silver': 'Kenneth Bednarek',
'Bronze': 'Noah Lyles',
},
'Women': {
'Gold': 'Elaine Thompson-Herah',
'Silver': 'Christine Mboma',
'Bronze': 'Gabrielle Thomas',
}
}
# Add to the 'athletics' dictionary
athletics['200m'] = results200m
Một cách khác để làm điều đó
Các ví dụ trên đã sử dụng từ điển trong đó tất cả các khóa và giá trị là chuỗi. Tất nhiên, đây không phải là trường hợp. khóa có thể là chuỗi, số hoặc bộ dữ liệu và giá trị có thể là bất kỳ loại dữ liệu nào
# The 400m medal winners at the Tokyo 2020 Olympics
athletics['400m'] = {
'Men': {
1: 'Steven Gardiner',
2: 'Anthony Zambrano',
3: 'Kirani James',
},
'Women': {
[1, 'Name']: 'Shaunae Miller-Uibo',
[1, 'Time']: 48.36,
[2, 'Name']: 'Marileidy Paulino',
[2, 'Time']: 49.20,
[3, 'Name']: 'Allyson Felix',
[3, 'Time']: 49.46,
}
}
Các giá trị lập chỉ mục bây giờ trông như thế này
## Marcell Jacobs
0## Marcell Jacobs
1## Marcell Jacobs
2print[athletics['100m']['Men']['Gold']]
0Như đã đề cập, các giá trị trong một dict có thể thuộc bất kỳ kiểu dữ liệu nào. Thường thì sẽ hữu ích nếu chúng ở dạng danh sách và điều này dẫn đến phần tiếp theo…
Từ điển chứa kết hợp cả danh sách và từ điển là một định dạng rất phổ biến cho dữ liệu được lưu trữ trong. Thông thường, chúng sẽ xuất hiện dưới dạng tệp Ký hiệu đối tượng JavaScript [JSON], sau khi được nhập vào Python, về cơ bản chính xác là tệp này. Đây là một ví dụ về nội dung của một tệp như thế này có thể trông như thế nào
print[athletics['100m']['Men']['Gold']]
1____42print[athletics['100m']['Men']['Gold']]
3Lưu ý rằng, trong cách lập chỉ mục ở trên,
## Marcell Jacobs
9 là khóa của một giá trị trong từ điển và # Add a key-value pair to the nested dictionary
athletics['100m']['Women']['Fourth'] = 'Marie-Josée Ta Lou'
0 là vị trí của một phần tử trong danh sáchTất nhiên, bạn cũng có thể có một danh sách các từ điển
_______44____45____46Từ điển lồng nhau có thể được hợp nhất theo cách giống như bất kỳ từ điển nào
print[athletics['100m']['Men']['Gold']]
7print[athletics['100m']['Men']['Gold']]
8Khi bạn lặp qua một từ điển, bạn sẽ lặp qua các phím và chỉ các phím cấp cao nhất tại đó
print[athletics['100m']['Men']['Gold']]
9## Marcell Jacobs
0In [các] giá trị của mỗi khóa sẽ hiển thị toàn bộ nội dung của từ điển
## Marcell Jacobs
1## Marcell Jacobs
2Ở trên là tương đương với
## Marcell Jacobs
3Để lặp lại mọi mục trong từ điển, thay vì chỉ các khóa cấp cao nhất, bạn sẽ cần sử dụng một loạt vòng lặp [hoặc một vòng lặp đệ quy, như minh họa bên dưới]