Merungkai Kerumitan: Meratakan Kamus Bersarang
Andaikan anda menemui kamus rumit dengan aras bersarang, mencerminkan struktur kusut labirin. Untuk merentasi kamus ini, seseorang mesti menggunakan teknik yang bijak untuk meratakannya, membongkar lapisan rumitnya ke dalam bentuk yang dipermudahkan. Penyampaian yang dipermudahkan ini mendedahkan data asas dengan cara yang lebih mudah diakses dan mudah.
Kunci kepada pemudahan ini terletak pada lelaran pada kedua-dua kunci dan nilai kamus. Melalui proses ini, kekunci baharu dibina dengan teliti dengan menggabungkan kunci induk dengan kunci semasa, dipisahkan oleh pembatas yang boleh disesuaikan.
Jika nilai itu sendiri menjadi kamus, proses perataan digunakan secara rekursif, menggabungkan dengan lancar unsur-unsurnya ke dalam struktur yang diratakan. Walau bagaimanapun, jika nilai itu bukan kamus, ia dilampirkan terus pada kamus yang diratakan.
Pada dasarnya, nilai-nilai yang terkandung dalam web rumit kamus bersarang diekstrak dengan teliti dan dihiasi dengan kunci yang baru diberikan, mencerminkan mereka hubungan hierarki. Hasilnya ialah kamus yang diratakan, serupa dengan peta yang tersusun rapi, di mana setiap nilai boleh didapati dengan mudah dengan kunci uniknya yang baru ditetapkan.
Untuk menggambarkan lagi teknik merata ini, pertimbangkan contoh berikut:
from collections.abc import MutableMapping def flatten(dictionary, parent_key='', separator='_'): items = [] for key, value in dictionary.items(): new_key = parent_key + separator + key if parent_key else key if isinstance(value, MutableMapping): items.extend(flatten(value, new_key, separator=separator).items()) else: items.append((new_key, value)) return dict(items)
Apabila digunakan pada kamus seperti:
{'a': 1, 'c': {'a': 2, 'b': {'x': 5, 'y' : 10}}, 'd': [1, 2, 3]}
Hasilnya adalah diratakan kamus:
{'a': 1, 'c_a': 2, 'c_b_x': 5, 'd': [1, 2, 3], 'c_b_y': 10}
Menggunakan teknik merata ini, seseorang secara berkesan membongkar kerumitan kamus bersarang, mendedahkan struktur tersembunyi di dalamnya. Perwakilan diperkemas ini memperkasakan pembangun dengan format data yang lebih mudah diakses dan terurus, memudahkan tugas seperti analisis data, pertanyaan dan manipulasi data.
Atas ialah kandungan terperinci Bagaimana Saya Boleh Meratakan Kamus Bersarang dalam Python?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!