Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana Mengeluarkan Semua Nilai yang Dihubungkan dengan Kunci Khusus dalam Struktur Data Bersarang dengan Cekap?

Bagaimana Mengeluarkan Semua Nilai yang Dihubungkan dengan Kunci Khusus dalam Struktur Data Bersarang dengan Cekap?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-10 10:51:03695semak imbas

How to Efficiently Extract All Values Associated with a Specific Key in Nested Data Structures?

Mencari Semua Kejadian Kunci dalam Struktur Data Bersarang

Objektif:
Mendapatkan semula semua nilai yang dikaitkan dengan kunci khusus dalam kamus bersarang dan senarai.

Pernyataan Masalah:
Pertimbangkan struktur data yang kompleks seperti kamus ini:

{
    "id": "abcde",
    "key1": "blah",
    "key2": "blah blah",
    "nestedlist": [
        {
            "id": "qwerty",
            "nestednestedlist": [
                {
                    "id": "xyz",
                    "keyA": "blah blah blah"
                },
                {
                    "id": "fghi",
                    "keyZ": "blah blah blah"
                }
            ],
            "anothernestednestedlist": [
                {
                    "id": "asdf",
                    "keyQ": "blah blah"
                },
                {
                    "id": "yuiop",
                    "keyW": "blah"
                }
            ]
        }
    ]
}

Matlamatnya adalah untuk mengekstrak semua nilai yang dikaitkan dengan "id " kunci.

Penyelesaian:
Untuk melintasi dan mengekstrak nilai "id" daripada struktur kompleks ini, pelbagai pendekatan boleh digunakan. Beberapa teknik yang biasa digunakan termasuk:

  • Fungsi Penjana Rekursif: Kaedah ini menggunakan fungsi penjana untuk melintasi struktur data secara rekursif, menyemak kekunci "id" dan menghasilkan nilai yang sepadan.
  • Depth-First Search (DFS) dengan Tindanan: Pendekatan DFS boleh dilaksanakan menggunakan tindanan untuk menolak elemen ke dalam tindanan, melawatinya dalam susunan yang pertama masuk terakhir dan mencari kunci "id" pada setiap langkah.
  • Depth-First Search (DFS) dengan Rekursi: Sama seperti menggunakan tindanan, rekursi boleh digunakan untuk traversal DFS, dengan fungsi memanggil dirinya secara rekursif untuk meneroka cabang struktur data dan mencari kunci "id".

Perbandingan Prestasi:
Untuk menentukan pendekatan yang paling cekap, teknik yang disebutkan telah diuji pada struktur data kompleks yang mengandungi 100,000 lelaran. Keputusan prestasi mendedahkan perkara berikut:

  • paling pantas dan paling selamat: gen_dict_extract
  • paling perlahan dan paling mudah ralat: find_all_item
  • prestasi jarak pertengahan: findkeys, get_recursively, find, dict_extract

Kesimpulan:
Untuk merentasi struktur data yang kompleks dan mengekstrak nilai yang dikaitkan dengan kunci tertentu, menggunakan fungsi penjana rekursif seperti gen_dict_extract menyediakan optimum kecekapan dan kebolehpercayaan.

Atas ialah kandungan terperinci Bagaimana Mengeluarkan Semua Nilai yang Dihubungkan dengan Kunci Khusus dalam Struktur Data Bersarang dengan Cekap?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn