Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Python - Dapatkan item tahap bersarang tertentu daripada kamus

Python - Dapatkan item tahap bersarang tertentu daripada kamus

PHPz
PHPzke hadapan
2023-08-20 14:37:13820semak imbas

Python - 从字典中获取特定的嵌套级别项

Dalam Python, kamus membolehkan anda menyimpan pasangan nilai kunci, menjadikannya mudah untuk mengatur dan mengakses data dengan cekap. Kadangkala, kita mungkin perlu mendapatkan semula item tertentu daripada peringkat bersarang kamus. Kita boleh mendapatkan item peringkat bersarang daripada kamus menggunakan isinstance() dengan kaedah rekursif dan kaedah dict.get(). Dalam artikel ini, kami akan meneroka cara yang berbeza untuk mendapatkan item daripada kamus Python pada tahap bersarang tertentu.

Kamus Bersarang

Kamus bersarang ialah kamus yang mengandungi kamus lain sebagai nilai. Ini membolehkan penciptaan struktur hierarki di mana data disusun dalam cara seperti pokok. Setiap peringkat hierarki mewakili pasangan nilai kunci, dan nilainya ialah kamus lain. Mengakses item daripada struktur sedemikian memerlukan kaedah khusus untuk menavigasi melalui tahap pokok.

Kaedah 1: Gunakan rekursi

Dengan menggunakan kaedah rekursif, kami boleh mendapatkan semula item dengan mudah daripada peringkat bersarang dalam kamus tanpa menyatakan secara jelas setiap peringkat Ia menyediakan penyelesaian yang fleksibel dan cekap, terutamanya apabila berurusan dengan struktur data yang kompleks.

Algoritma

  • Tentukan fungsi, mari kita panggil ia get_nested_item, yang menerima dua parameter: data kamus dan senarai kunci yang mewakili tahap bersarang.

  • Semak sama ada senarai kunci kosong. Jika kosong, data dikembalikan kerana ia mewakili nilai untuk tahap sarang yang dikehendaki.

  • Jika tidak, dapatkan kunci pertama daripada senarai kunci

  • Semak sama ada kunci wujud dalam kamus data. Jika ada, fungsi get_nested_item dipanggil secara rekursif menggunakan nilai yang sepadan dengan kunci itu sebagai parameter data baharu dan kunci yang tinggal dalam senarai kunci.

  • Jika kunci tidak wujud, kembalikan Tiada atau nilai lalai untuk menunjukkan bahawa item itu tidak ditemui.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Dalam contoh di bawah, kami mentakrifkan fungsi get_nested_item yang menerima kamus data dan senarai kunci sebagai parameter. Kami menyemak sama ada senarai kunci kosong jika ya, kembalikan nilai data. Jika tidak, kami mendapat kunci pertama daripada senarai kunci dan semak sama ada ia wujud dalam kamus data. Jika ia wujud, kami secara rekursif memanggil fungsi get_nested_item dengan nilai yang sepadan sebagai data baharu dan kekunci yang tinggal dalam senarai kunci. Jika kunci tidak ditemui, Tiada dikembalikan.

def get_nested_item(data, keys):
    if len(keys) == 0:
        return data

    key = keys[0]
    if key in data:
        return get_nested_item(data[key], keys[1:])
    else:
        return None

keys = ['employees', 'John', 'position']
position = get_nested_item(company_data, keys)
print(position)

Output

Manager

Kaedah 2: Gunakan isinstance() dan rekursi

Fungsi

isinstance() digunakan dalam Python untuk menyemak jenis objek. Mengembalikan True jika objek adalah contoh jenis yang ditentukan, False sebaliknya. Kita boleh menggunakan fungsi ini dengan rekursi untuk melintasi tahap kamus bersarang secara dinamik.

Algoritma

  • Tentukan fungsi, mari kita panggil ia get_nested_item, yang menerima dua parameter: data kamus dan senarai kunci yang mewakili tahap bersarang.

  • Semak sama ada senarai kunci kosong. Jika kosong, data dikembalikan kerana ia mewakili nilai untuk tahap sarang yang dikehendaki.

  • Jika tidak, dapatkan kunci pertama daripada senarai kunci.

  • Gunakan isinstance(data, dict) untuk menyemak sama ada data tersebut ialah kamus. Jika ya, panggil fungsi get_nested_item secara rekursif dengan nilai kunci yang sepadan sebagai parameter data baharu dan senarai kunci yang tinggal sebagai parameter.

  • Jika data bukan kamus atau kunci tidak wujud, kembalikan Tiada atau nilai lalai untuk menunjukkan bahawa item itu tidak ditemui.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Dalam contoh di bawah, kami menggunakan isinstance(data, dict) untuk menyemak sama ada data tersebut ialah kamus. Jika ya, kami terus memanggil get_nested_item secara rekursif. Semakan ini memastikan bahawa kami mengelakkan ralat mengakses kekunci yang tidak wujud semasa menavigasi hierarki kamus yang sah.

def get_nested_item(data, keys):
    if len(keys) == 0:
        return data

    key = keys[0]
    if isinstance(data, dict) and key in data:
        return get_nested_item(data[key], keys[1:])
    else:
        return None

keys = ['employees', 'John', 'position']
position = get_nested_item(company_data, keys)
print(position)

Output

Manager

Kaedah 3: Menggunakan kaedah dict.get()

Kaedah

dict.get() ialah cara yang berguna untuk mendapatkan semula nilai daripada kamus dan memberikan nilai lalai jika kunci tidak ditemui. Ia adalah pendekatan yang lebih bersih dan selamat daripada menggunakan indeks kamus secara langsung, terutamanya apabila berurusan dengan kamus bersarang atau apabila anda tidak tahu sama ada kunci itu wujud.

Terjemahan bahasa Cina bagi

Contoh

ialah:

Contoh

Dalam contoh di bawah, kami mempunyai kamus bersarang data_syarikat yang mewakili maklumat pekerja Kami menggunakan data_syarikat.get('pekerja', {}).get('John', {}).get('position', '. Tidak diketahui') untuk mendapatkan semula kedudukan pekerja 'John' Dengan menggunakan dict.get() pada setiap peringkat, kami memastikan kod tersebut mengendalikan kekunci yang hilang dengan mudah tanpa menimbulkan ralat Jika sebarang kunci hilang, nilai lalai '. Unknown' dikembalikan.

company_data = {
    'employees': {
        'John': {
            'age': 30,
            'position': 'Manager',
            'department': 'Sales'
        },
        'Emily': {
            'age': 25,
            'position': 'Developer',
            'department': 'IT'
        }
    }
}
position = company_data.get('employees', {}).get('John', {}).get('position', 'Unknown')
print(position)

Output

Manager

Kesimpulan

Dalam artikel ini, kami membincangkan cara mendapatkan item tahap bersarang tertentu daripada kamus menggunakan kaedah rekursi, isinstance dan rekursif serta menggunakan kaedah dict.get(). Kaedah dict.get() amat berguna apabila anda tidak pasti tentang kewujudan kunci atau ingin mengendalikan kunci yang hilang dengan mudah. Fungsi isinstance() dan rekursi membolehkan kami melintasi kamus bersarang dengan cekap.

Atas ialah kandungan terperinci Python - Dapatkan item tahap bersarang tertentu daripada kamus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:tutorialspoint.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam