Dalam artikel ini, kami meneroka penyelesaian Python yang elegan dan cekap untuk menukar rentetan kosong kepada nilai arbitrari dalam struktur data bersarang (kamus dan senarai). Penyelesaian Typescript asal, walaupun berfungsi, mengilhamkan pendekatan yang lebih ringkas dan "pythonic" menggunakan rekursi dan pemahaman.
Pada mulanya, keperluan timbul apabila berurusan dengan tiga fail berbeza yang mengandungi struktur data bersarang berbeza dalam Python. Pencarian untuk penyelesaian generik membawa kepada pembangunan fungsi rekursif yang merentasi struktur data, menggantikan rentetan kosong dengan nilai lalai ("NOT_FOUND" dalam contoh).
Versi pertama fungsi dalam Python menggunakan gelung eksplisit untuk mengulangi kamus dan senarai. Walau bagaimanapun, evolusi kepada pemahaman kamus dan pemahaman senarai menghasilkan kod yang jauh lebih padat dan boleh dibaca sambil mengekalkan logik rekursif yang sama.
Penyelesaian muktamad dalam Python:
<code class="language-python">def substituir_strings_vazias(dados): if isinstance(dados, dict): return {k: substituir_strings_vazias(v) for k, v in dados.items()} elif isinstance(dados, list): return [substituir_strings_vazias(item) for item in dados] elif isinstance(dados, str) and dados == "": return "NAO_ENCONTRADO" return dados dados = { "nome": "", "idade": 25, "endereco": { "rua": "", "cidade": "São Paulo", "estado": "" }, "contatos": ["", "email@example.com"] } dados_convertidos = substituir_strings_vazias(dados) print(dados_convertidos)</code>
Cara ia berfungsi:
Fungsi substituir_strings_vazias
adalah rekursif. Ia menyemak jenis data yang diterima:
Kamus: Jika kamus, ia menggunakan pemahaman kamus untuk mencipta kamus baharu di mana setiap nilai diproses secara rekursif oleh fungsi yang sama.
Senarai: Jika ia adalah senarai, ia menggunakan pemahaman senarai untuk membuat senarai baharu di mana setiap item diproses secara rekursif.
Rentetan Kosong: Jika rentetan kosong, ia mengembalikan "NOT_FOUND".
Jenis Lain: Untuk sebarang jenis data lain, ia mengembalikan data asal tanpa pengubahsuaian.
Rekursi memastikan fungsi memproses semua peringkat struktur data bersarang. Kesingkat kod Python, terima kasih kepada kefahaman, menyerlahkan keanggunan dan kecekapan penyelesaian berbanding versi Typescript asal. Fungsi ini menjadi sangat boleh digunakan semula untuk menormalkan set data dengan nilai kosong atau kosong. Perbezaan antara pendekatan akhir dalam Python dan pendekatan awal dalam Typescript adalah ketara, menunjukkan kuasa alat yang tersedia dalam Python untuk menangani jenis masalah ini.
Atas ialah kandungan terperinci Refactory hari - ts python recurutisive dan jenis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!