Trích xuất các giá trị từ từ điển Python lồng nhau

Tôi đang loại bỏ một biểu đồ trang web và lấy lại một chuỗi mà đối với tôi trông giống như một từ điển lồng nhau, tuy nhiên, dường như tôi không thể tìm ra cách chuyển đổi nó thành một từ điển lồng nhau mà Python sẽ hiểu

'{"values":[{"data":[{"x":1634594400000,"y":88.443,"name":"DA 2021-10-19"},{"x":1634680800000,"y":85.523,"name":"DA 2021-10-20"},{"x":1634767200000,"y":91.224,"name":"DA 2021-10-21"},{"x":1634853600000,"y":86.035,"name":"DA 2021-10-22"},{"x":1634940000000,"y":86.42,"name":"WE 2021-10-23\\/24"},{"x":1635026400000,"y":86.42,"name":"WE 2021-10-23\\/24"},{"x":1635112800000,"y":86.854,"name":"DA 2021-10-25"},{"x":1635199200000,"y":88.999,"name":"DA 2021-10-26"},{"x":1635285600000,"y":87.604,"name":"DA 2021-10-27"},{"x":1635372000000,"y":85.434,"name":"DA 2021-10-28"},{"x":1635458400000,"y":75.037,"name":"DA 2021-10-29"},{"x":1635544800000,"y":62.555,"name":"WE 2021-10-30\\/31"},{"x":1635631200000,"y":62.555,"name":"WE 2021-10-30\\/31"},{"x":1635721200000,"y":62.479,"name":"DA 2021-11-01"},{"x":1635807600000,"y":64.1,"name":"DA 2021-11-02"},{"x":1635894000000,"y":68.19,"name":"DA 2021-11-03"},{"x":1635980400000,"y":77.484,"name":"DA 2021-11-04"},{"x":1636066800000,"y":71.698,"name":"DA 2021-11-05"},{"x":1636153200000,"y":73.138,"name":"WE 2021-11-06\\/07"},{"x":1636239600000,"y":73.138,"name":"WE 2021-11-06\\/07"},{"x":1636326000000,"y":73.225,"name":"DA 2021-11-08"},{"x":1636412400000,"y":77.932,"name":"DA 2021-11-09"},{"x":1636498800000,"y":72.372,"name":"DA 2021-11-10"},{"x":1636585200000,"y":70.271,"name":"DA 2021-11-11"},{"x":1636671600000,"y":73.99,"name":"DA 2021-11-12"},{"x":1636758000000,"y":73.479,"name":"WE 2021-11-13\\/14"},{"x":1636844400000,"y":73.479,"name":"WE 2021-11-13\\/14"},{"x":1636930800000,"y":73.994,"name":"DA 2021-11-15"},{"x":1637017200000,"y":79.68,"name":"DA 2021-11-16"},{"x":1637103600000,"y":93.825,"name":"DA 2021-11-17"},{"x":1637190000000,"y":94.014,"name":"DA 2021-11-18"},{"x":1637276400000,"y":93.261,"name":"DA 2021-11-19"},{"x":1637362800000,"y":86.906,"name":"WE 2021-11-20\\/21"},{"x":1637449200000,"y":86.906,"name":"WE 2021-11-20\\/21"},{"x":1637535600000,"y":87.392,"name":"DA 2021-11-22"},{"x":1637622000000,"y":84.204,"name":"DA 2021-11-23"},{"x":1637708400000,"y":91.352,"name":"DA 2021-11-24"},{"x":1637794800000,"y":94.053,"name":"DA 2021-11-25"},{"x":1637881200000,"y":92.802,"name":"DA 2021-11-26"},{"x":1637967600000,"y":87.756,"name":"WE 2021-11-27\\/28"},{"x":1638054000000,"y":87.756,"name":"WE 2021-11-27\\/28"},{"x":1638140400000,"y":88.082,"name":"DA 2021-11-29"},{"x":1638226800000,"y":93.359,"name":"DA 2021-11-30"},{"x":1638313200000,"y":91.586,"name":"DA 2021-12-01"},{"x":1638399600000,"y":97.103,"name":"DA 2021-12-02"},{"x":1638486000000,"y":94.284,"name":"DA 2021-12-03"}]}],"unit":"\\u20ac\\/MWh"}'

Cảm ơn
Biên tập

Những gì tôi đã thử

df = json.loads[data] 

Một từ điển có thể chứa một từ điển khác, từ điển này có thể chứa chính các từ điển, v.v. với độ sâu tùy ý. Điều này được gọi là từ điển lồng nhau

Từ điển lồng nhau là một trong nhiều cách để biểu diễn thông tin có cấu trúc [tương tự như 'bản ghi' hoặc 'cấu trúc' trong các ngôn ngữ khác]

Tạo một từ điển lồng nhau

Từ điển lồng nhau được tạo giống như cách tạo từ điển thông thường. Sự khác biệt duy nhất là mỗi giá trị là một từ điển khác

Hãy xây dựng một từ điển lưu trữ hồ sơ nhân viên

D = {'emp1': {'name': 'Bob', 'job': 'Mgr'},
     'emp2': {'name': 'Kim', 'job': 'Dev'},
     'emp3': {'name': 'Sam', 'job': 'Dev'}}

Trình tạo dict[]

Có một số cách để tạo từ điển lồng nhau bằng cách sử dụng hàm tạo kiểu có tên dict[]

Để tạo một từ điển lồng nhau, chỉ cần chuyển khóa từ điển. cặp giá trị làm đối số từ khóa cho Trình xây dựng

D = dict[emp1 = {'name': 'Bob', 'job': 'Mgr'},
         emp2 = {'name': 'Kim', 'job': 'Dev'},
         emp3 = {'name': 'Sam', 'job': 'Dev'}]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}
5

D = dict[emp1 = {'name': 'Bob', 'job': 'Mgr'},
         emp2 = {'name': 'Kim', 'job': 'Dev'},
         emp3 = {'name': 'Sam', 'job': 'Dev'}]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}

Bạn có thể sử dụng hàm dict[] cùng với hàm zip[] để kết hợp các danh sách khóa và giá trị riêng biệt thu được tự động trong thời gian chạy

IDs = ['emp1','emp2','emp3']

EmpInfo = [{'name': 'Bob', 'job': 'Mgr'},
           {'name': 'Kim', 'job': 'Dev'},
           {'name': 'Sam', 'job': 'Dev'}]

D = dict[zip[IDs, EmpInfo]]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}

Bạn thường muốn tạo một từ điển với các giá trị mặc định cho mỗi khóa. Phương thức fromkeys[] cung cấp một cách để làm điều này

IDs = ['emp1','emp2','emp3']
Defaults = {'name': '', 'job': ''}

D = dict.fromkeys[IDs, Defaults]

print[D]
# Prints {'emp1': {'name': '', 'job': ''},
#         'emp2': {'name': '', 'job': ''},
#         'emp3': {'name': '', 'job': ''}}

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

Bạn có thể truy cập các mục riêng lẻ trong từ điển lồng nhau bằng cách chỉ định khóa trong nhiều dấu ngoặc vuông

D = {'emp1': {'name': 'Bob', 'job': 'Mgr'},
     'emp2': {'name': 'Kim', 'job': 'Dev'},
     'emp3': {'name': 'Sam', 'job': 'Dev'}}

print[D['emp1']['name']]
# Prints Bob

print[D['emp2']['job']]
# Prints Dev

Nếu bạn tham chiếu đến một khóa không có trong từ điển lồng nhau, một ngoại lệ sẽ được đưa ra

________số 8

Để tránh trường hợp ngoại lệ như vậy, bạn có thể sử dụng phương thức get[] từ điển đặc biệt. Phương thức này trả về giá trị cho khóa nếu khóa có trong từ điển, nếu không thì

D = dict[emp1 = {'name': 'Bob', 'job': 'Mgr'},
         emp2 = {'name': 'Kim', 'job': 'Dev'},
         emp3 = {'name': 'Sam', 'job': 'Dev'}]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}
6, vì vậy phương thức này không bao giờ tăng
D = dict[emp1 = {'name': 'Bob', 'job': 'Mgr'},
         emp2 = {'name': 'Kim', 'job': 'Dev'},
         emp3 = {'name': 'Sam', 'job': 'Dev'}]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}
7

df = json.loads[data] 
1

Thay đổi các mục từ điển lồng nhau

Để thay đổi giá trị của một mục cụ thể trong từ điển lồng nhau, hãy tham khảo khóa của nó

df = json.loads[data] 
2

Thêm hoặc cập nhật các mục từ điển lồng nhau

Dễ dàng thêm hoặc cập nhật các mục từ điển lồng nhau. Chỉ cần tham khảo mục theo khóa của nó và gán giá trị. Nếu khóa đã có trong từ điển, giá trị của nó sẽ được thay thế bằng khóa mới

df = json.loads[data] 
3

Nếu khóa mới, nó sẽ được thêm vào từ điển với giá trị của nó

df = json.loads[data] 
4

Hợp nhất hai từ điển lồng nhau

Sử dụng phương thức update[] tích hợp để hợp nhất các khóa và giá trị của một từ điển lồng vào một từ điển khác. Lưu ý rằng phương pháp này sẽ ghi đè mù quáng các giá trị của cùng một khóa nếu có xung đột

D = dict[emp1 = {'name': 'Bob', 'job': 'Mgr'},
         emp2 = {'name': 'Kim', 'job': 'Dev'},
         emp3 = {'name': 'Sam', 'job': 'Dev'}]

print[D]
# Prints {'emp1': {'name': 'Bob', 'job': 'Mgr'},
#         'emp2': {'name': 'Kim', 'job': 'Dev'},
#         'emp3': {'name': 'Sam', 'job': 'Dev'}}
0

Tại đây, bản ghi 'emp2′ được cập nhật trong khi 'emp3′ được thêm vào từ điển

Xóa các mục từ điển lồng nhau

Có một số cách để xóa các mục khỏi từ điển lồng nhau

Xóa một mục bằng phím

Nếu bạn biết khóa của mục mình muốn, bạn có thể sử dụng phương thức pop[] . Nó xóa khóa và trả về giá trị của nó

Chủ Đề