Tôi có từ điển với định dạng sau:
Mã demo:
>>> import pprint
>>> pprint.pprint[data]
{'lookup': {'F01': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F02': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F03': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F04': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F05': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F06': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F07': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F08': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F09': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F10': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F11': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }',
'F12': '\n.custom1 {\n background-color: #f5e9dc;\n padding: 10px;\n border-radius: 10px;\n font-family: sans-serif;\n font-size: 0.9em;\n margin-top: 1em;\n }\n.custom2 .style8-rw {\n font-family: sans-serif;\n font-weight: bold;\n color: #F57215;\n }'},
'sequence': ['F01',
'F02',
'F03',
'F04',
'F05',
'F06',
'F07',
'F08',
'F09',
'F10',
'F11',
'F12']}
>>> import sys
>>> sys.getsizeof[data]
136
>>> sys.getsizeof[data["sequence"]]
80
>>> sys.getsizeof[data["lookup"]]
520
>>>
Tôi không thể có được cách lưu trữ từ điển trong bộ nhớ vì kích thước nếu data
là 136 byte và kích thước ____10 là 80 byte và kích thước của
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
1 là 520 byte.Ngoài ra, khi tôi thực hiện việc đúc dữ liệu biến từ
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
2 đến >>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
3 thì kích thước của biến chuỗi là >>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
4.Mã demo:
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
Có thể giải thích cho tôi tại sao?
Giới thiệu
Trong bài viết này, chúng ta sẽ xem xét cách tìm kích thước của một từ điển trong Python.
Kích thước từ điển có thể có nghĩa là chiều dài của nó, hoặc không gian nó chiếm trong bộ nhớ. Để tìm số lượng các phần tử được lưu trữ trong từ điển, chúng ta có thể sử dụng hàm
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
5.Để tìm kích thước của một từ điển trong byte, chúng ta có thể sử dụng hàm
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
6 của mô -đun >>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
7.Để đếm các yếu tố của từ điển lồng nhau, chúng ta có thể sử dụng hàm đệ quy.
Tìm kích thước của từ điển
Hàm
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
5 được sử dụng rộng rãi để xác định kích thước của các đối tượng trong Python. Trong trường hợp của chúng tôi, việc chuyển một đối tượng từ điển cho hàm này sẽ trả về kích thước của từ điển, tức là số lượng các cặp giá trị khóa có trong từ điển.Bởi vì các đối tượng này theo dõi độ dài của chúng, hoạt động này có độ phức tạp thời gian O [1]:
my_dict = {1: "a", 2: "b"}
print["The length of the dictionary is {}".format[len[my_dict]]]
Đoạn trích trên trả về đầu ra này:
The length of the dictionary is 2
Tìm kích thước của từ điển trong byte
Kích thước bộ nhớ của đối tượng từ điển trong byte có thể được xác định bởi hàm
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
6. Hàm này có sẵn từ mô -đun >>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
7. Giống như >>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
5, nó có thể được sử dụng để tìm kích thước của bất kỳ đối tượng Python nào.Điều này đặc biệt hữu ích khi chúng ta cần mã cần phải thực hiện và/hoặc yêu cầu giám sát thường xuyên. Hãy lấy ví dụ trước của chúng tôi và có được kích thước từ điển tính bằng byte thay vì số lượng các phần tử:
import sys
my_dict = {1: "a", 2: "b"}
print["The size of the dictionary is {} bytes".format[sys.getsizeof[my_dict]]]
Đầu ra kết quả là:
The size of the dictionary is 232 bytes
Tìm kích thước của từ điển lồng nhau
Một từ điển lồng nhau là một từ điển bên trong một từ điển, hoặc một từ điển với nhiều cấp độ của các cặp giá trị khóa. Những từ điển lồng nhau này giúp đơn giản hóa các cấu trúc phức tạp như phản hồi JSON từ API.
Chúng trông một cái gì đó dọc theo dòng của:
{"dict1": {"dict2": "value 1"}}
Sử dụng
>>> data_str = str[data]
>>> sys.getsizeof[data_str]
3587
5 để có được số lượng của tất cả các cặp có giá trị khóa sẽ không hoạt động vì nó chỉ cung cấp kích thước của đối tượng cho cấp độ đầu tiên của các phím. Để tìm số lượng của tất cả các khóa lồng nhau, chúng ta có thể viết một hàm đệ quy tùy chỉnh để đếm các khóa. Hàm này sẽ lấy một từ điển và một bộ đếm làm đối số và lặp lại thông qua từng khóa.Đối với mỗi lần lặp, chức năng kiểm tra xem ví dụ của khóa được xem xét là từ điển. Nếu đó là sự thật, hàm được gọi lại một lần nữa bằng cách nối lại biến bộ đếm vào
my_dict = {1: "a", 2: "b"}
print["The length of the dictionary is {}".format[len[my_dict]]]
3 và truyền từ điển theo đánh giá làm đối số.Hàm đệ quy này thoát ra khi lặp hoàn chỉnh, trả về độ dài của từ điển là biến:
my_dict = {1: "a", 2: "b"}
print["The length of the dictionary is {}".format[len[my_dict]]]
4.Kiểm tra hướng dẫn thực hành của chúng tôi, thực tế để học Git, với các thực hành tốt nhất, các tiêu chuẩn được công nghiệp chấp nhận và bao gồm bảng gian lận. Ngừng các lệnh git googling và thực sự tìm hiểu nó!
Nếu khóa không phải là một thể hiện từ điển, bộ đếm chỉ được thêm vào
my_dict = {1: "a", 2: "b"}
print["The length of the dictionary is {}".format[len[my_dict]]]
3. Hàm trả về giá trị my_dict = {1: "a", 2: "b"}
print["The length of the dictionary is {}".format[len[my_dict]]]
4 do kết quả của phép lặp mang lại kích thước của từ điển đang được đánh giá.Do đó, số lượng của các phím lồng nhau được đánh giá bằng cách sử dụng chức năng này như được hiển thị bên dưới:
def count_keys[dict_, counter=0]:
for each_key in dict_:
if isinstance[dict_[each_key], dict]:
# Recursive call
counter = count_keys[dict_[each_key], counter + 1]
else:
counter += 1
return counter
my_dict = {
'Name':
{
'first_name': 'Sherlock',
'Last_name': 'Holmes'
},
'Locality':
{
'Address':
{
'Street': '221B Baker Street'
},
'City': 'London',
'Country': 'United Kingdom'
}
}
print['The length of the nested dictionary is {}'.format[count_keys[my_dict]]]
Và khi đoạn trích được thực thi, chúng tôi sẽ nhận được đầu ra sau tương ứng với số lượng khóa có trong từ điển:
The length of the nested dictionary is 8
Sự kết luận
Trong bài viết này, chúng tôi đã khám phá các phương pháp để tính toán kích thước và độ dài của từ điển và từ điển lồng nhau.
Các chức năng này có thể rất hữu ích trong việc phục vụ các đối tượng JSON trên API: có những giới hạn được áp đặt bởi các máy chủ cho kích thước của các đối tượng JSON được phục vụ trên API và các chức năng này có thể được sử dụng để kiểm tra độ dài và kích thước.