Rumah > Artikel > pembangunan bahagian belakang > Python - Tapis elemen ganjil daripada senarai nilai kamus
Kamus ialah jenis data popular dalam Python yang mempunyai pasangan nilai kunci dan tidak membenarkan pendua. Untuk menapis elemen ganjil ia mempunyai beberapa fungsi terbina seperti item(), penapis(), lambda dan list() akan digunakan untuk menapis unsur ganjil daripada senarai nilai dalam kamus. Unsur ganjil dalam senarai ialah unsur yang tidak boleh dibahagikan dengan 2.
Sebagai contoh -
Senarai yang diberikan, [10, 22, 21, 19, 2, 5]
Selepas menapis elemen ganjil daripada senarai:
Keputusan akhir menjadi [10, 22, 2] (ini adalah unsur yang boleh dibahagi dengan integer 2).
Sintaks berikut digunakan dalam contoh -
items()
Ini ialah kaedah terbina dalam yang boleh digunakan untuk mengembalikan objek paparan. Objek terdiri daripada kunci dengan pasangan nilai.
filter()Elemen
Python's filter() digunakan untuk menapis elemen berdasarkan keadaan tertentu.
lambda
Fungsi lambda Menyediakan jalan pintas untuk mengisytiharkan fungsi tanpa nama pendek menggunakan kata kunci lambda. Fungsi Lambda berfungsi apabila diisytiharkan menggunakan kata kunci def.
list()
list() ialah Python terbina dalam yang mencipta objek senarai, ia menerima binaan boleh lelar dan menukarnya kepada senarai.
x % 2 != 0 or x % 2 == 1
Kedua-dua perwakilan di atas menggambarkan logik menapis unsur ganjil daripada senarai nilai.
Program ini menggunakan pemahaman kamus untuk menukar kamus asal kepada kamus baharu dengan menapis unsur ganjil. Elemen aneh ini boleh ditapis dengan menggunakan pemampatan senarai dengan pernyataan if-else.
Dalam contoh berikut, atur cara dimulakan menggunakan fungsi bernama odd_element yang menerima parameter bernama kamus. Parameter yang sama digunakan dengan teknik pemahaman iaitu list dan kamus dan if-statement untuk menetapkan penapisan unsur ganjil dalam kamus peranti nilai. Kemudian buat senarai nilai kamus dan simpannya dalam nama pembolehubah yang dipanggil kamus. Seterusnya, panggil fungsi menggunakan dan lulus nama parameter sebagai kamus yang mengandungi pasangan nilai kunci dan simpannya dalam pembolehubah filter_dict. Akhir sekali, kami mencetak hasilnya dengan bantuan filter_dict berubah-ubah.
def odd_elements(dictionary): return {key: [x for x in value if x % 2 != 0] for key, value in dictionary.items()} # Create the dictionary dictionary = {'A': [2, 4, 16, 19, 17], 'B': [61, 71, 90, 80, 10], 'C': [11, 121, 13, 14, 15]} filter_dict = odd_elements(dictionary) print("Filter odd elements from the value lists in dictionary:\n", filter_dict)
Filter odd elements from the value lists in dictionary: {'A': [19, 17], 'B': [61, 71], 'C': [11, 121, 13, 15]}
Atur cara ini menggunakan gelung for yang akan berulang ke atas kekunci dan nilai item kamus menggunakan item kaedah terbina dalam(). Ia kemudiannya akan mengalih keluar elemen ganjil daripada senarai kamus menggunakan fungsi terbina dalam bersarang seperti list(), filter() dan lambda.
Dalam contoh berikut, kami akan menggunakan gelung for untuk mengulangi kamus pembolehubah yang mengandungi kunci dengan senarai nilai. Untuk menapis elemen ganjil ia akan menggunakan tiga fungsi terbina bersarang iaitu list(), filter() dan lambda() [Fungsi ini menetapkan keadaan sebagai x%2 != 0 dan ia akan menyemak sama ada senarai nilai yang diberikan adalah sama ada integer boleh dibahagikan dengan 2] dan menyimpannya dalam pembolehubah filtered_dictionary. Selepas menapis elemen ganjil, tetapkan nilai filtered_dictionary dalam filtered_dictionary. Kemudian buat kamus yang terdiri daripada senarai kunci dan nilai dan simpan dalam kamus berubah-ubah. Sekarang pembolehubah ini ditetapkan dalam hujah fungsi panggilan odd_element() dan disimpan dalam pembolehubah filter_dict().
def odd_elements(dictionary): filtered_dictionary = {} # for loop for key, value in dictionary.items(): # Using filter() with lambda filtered_values = list(filter(lambda x: x % 2 != 0, value)) filtered_dictionary[key] = filtered_values return filtered_dictionary # create the dictionary dictionary = {'A': [1, 2, 3, 4, 5], 'B': [6, 7, 8, 9, 10], 'C': [11, 12, 13, 14, 15], 'D': [16, 17, 18, 19, 20]} filter_dict = odd_elements(dictionary) print("Filter odd elements from the value lists in dictionary:\n", filter_dict)
Filter odd elements from the value lists in dictionary: {'A': [1, 3, 5], 'B': [7, 9], 'C': [11, 13, 15], 'D': [17, 19]}
Atur cara menggunakan gelung for menggunakan item kaedah terbina dalam() untuk mengulangi kamus dan kekunci, kemudian ia akan menggunakan gelung for dan pernyataan if dalam satu baris yang mewakili pemahaman senarai.
Dalam contoh berikut, kami memulakan program dengan mentakrifkan fungsi bernama filter_odd_elements(), yang menerima parameter bernama kamus untuk mengakses nilainya. Seterusnya, cipta kamus kosong dalam pembolehubah filter_dictionary dan kemudian simpan kamus baharu sebagai hasilnya. Ia kemudiannya akan menggunakan gelung for untuk mengulangi setiap senarai nilai kamus. Teruskan dengan pemahaman senarai menggunakan pernyataan untuk dan jika dan simpannya dalam pembolehubah filter_values. Tukar pembolehubah yang sama dalam filter_dictionary[key]. Kemudian kembalikan hasil yang ditapis yang tidak mengandungi unsur ganjil kamus_penapis. Cipta kamus yang mengandungi senarai nilai dan simpan dalam pembolehubah dict. Pembolehubah baharu bernama f_dictionary menyimpan fungsi rekursif yang diluluskan argumen bernama dict. Akhir sekali, gunakan fungsi cetakan yang menerima pembolehubah f_dictionary untuk mendapatkan hasilnya.
def filter_odd_elements(dictionary): filter_dictionary = {} for key, value in dictionary.items(): # List Comprehension filter_values = [x for x in value if x % 2 != 0] filter_dictionary[key] = filter_values return filter_dictionary # Creation of dictionary dict = {'A': [307, 907], 'B': [100, 200], 'C': [110, 120]} # use the calling function f_dictionary = filter_odd_elements(dict) print("Filtration of odd elements from dictionary value list:\n", f_dictionary)
Filtration of odd elements from dictionary value list: {'A': [307, 907], 'B': [], 'C': []}
Program ini menggunakan pemahaman kamus untuk membantu menukar kamus kepada bentuk kamus baharu. Kaedah penapis() menggunakan fungsi lambda untuk menghapuskan unsur ganjil daripada senarai nilai kamus.
Dalam contoh berikut, kami akan menunjukkan cara pemahaman kamus menggunakan tiga kaedah untuk menyediakan logik berdasarkan penapisan unsur ganjil dalam senarai nilai dan menggunakan gelung for untuk mengulang setiap kunci dan nilai kamus.
def odd_elements(dictionary): return {key: list(filter(lambda x: x % 2 == 1, value)) for key, value in dictionary.items()} # Create the dictionary dict_1 = {'I': [1, 2, 3, 4, 5], 'II': [6, 7, 8, 9, 10], 'III': [11, 12, 13, 14, 15]} filter_dict = odd_elements(dict_1) print("ODD NUMBER FILTRATION IN DICTIONARY VALUES:\n", filter_dict)
ODD NUMBER FILTRATION IN DICTIONARY VALUES: {'I': [1, 3, 5], 'II': [7, 9], 'III': [11, 13, 15]}
Atur cara menggunakan fungsi rekursif untuk mengembalikan teknik pemahaman dengan menggunakan pernyataan pulangan.
Dalam contoh berikut, kami akan menggunakan fungsi rekursif dalam program untuk menapis unsur ganjil daripada nilai kamus dan mengembalikan kamus baharu dengan kunci yang sama dan nilai yang ditapis.
def odd_elements(dictionary): return {key: [x for x in value if x % 2 == 1] for key, value in dictionary.items()} # create the dictionary and store the value by odd and even in the list dictionary = {'list1': [100, 200, 300, 499, 599], 'list2': [699, 799, 899, 900, 1000]} filter_dict = odd_elements(dictionary) print("ODD NUMBER FILTRATION IN DICTIONARY VALUES:\n", filter_dict)
ODD NUMBER FILTRATION IN DICTIONARY VALUES: {'list1': [499, 599], 'list2': [699, 799, 899]}
我们讨论了基于从字典中的值列表中过滤奇数元素来解决此问题陈述的各种方法。上述所有示例大多使用综合技术,通过使用某种方法、循环或条件语句在 1-2 行内解决问题。当我们想要通过分配特定条件来过滤数据时,通常会使用程序目的。
Atas ialah kandungan terperinci Python - Tapis elemen ganjil daripada senarai nilai kamus. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!