Dalam Python, senarai dan kamus ialah salah satu kaedah pengumpulan dan pemprosesan data yang paling biasa digunakan. Terdapat banyak operasi yang berkaitan dengan senarai dan kamus yang biasa digunakan untuk mendapatkan data dalam bentuk yang dikehendaki. Kadangkala kita juga mungkin perlu memampatkan dua senarai berbeza dan mendapatkan senarai dimampatkan dalam bentuk kamus.
Dalam artikel ini, kita akan membincangkan operasi mampatan dua senarai panjang yang tidak sama dan mengeluarkan hasilnya sebagai kamus. Artikel ini akan membantu pembaca memahami operasi pemampatan senarai dan menjana kamus daripadanya.
Jadi mari kita mula membincangkan maksud memampatkan dua senarai yang tidak sama rata.
Dalam Python, pemampatan ialah salah satu operasi yang paling biasa semasa mengumpul dan memproses data, dan ia melibatkan penambahan dua senarai dalam bentuk pasangan nilai kunci. Ringkasnya, ia adalah operasi di mana nilai atau elemen dalam senarai disusun atau diwakili dengan cara yang menjadikannya kelihatan seperti pasangan nilai kunci dalam hasil output.
Operasi ini adalah salah satu yang paling biasa, kerana kadangkala kita mungkin memerlukan senarai atau kamus yang merupakan gabungan dua senarai berbeza. Kita boleh mempunyai dua senarai saiz atau panjang yang berbeza dan kemudian menggabungkannya dan mengeluarkannya dalam bentuk kamus untuk pemprosesan data yang lebih mudah dan cekap.
Terdapat banyak cara untuk mencapai kesan yang sama. Mari kita bincangkan beberapa kaedah ini.
Kami boleh menggunakan perpustakaan itertools dan boleh mengimport kitaran untuk mengezip dua senarai dan mendapatkan kamus sebagai output
# Itertools + Cycle Method # Import the cycle from itertools from itertools import cycle # define two lists list1 = ['a', 'b', 'c', 'd', 'e'] list2 = [1, 2, 3, 4] # zip the lists and pass them into the dictionary form res = dict(zip(list1, cycle(list2))) # print the final results print("Final Output Dictionary : ", str(res))
Seperti yang kita lihat dalam kod di atas, mula-mula kita mengimport kitaran daripada itertools dan menentukan dua senarai saiz yang berbeza.
Kemudian gunakan fungsi gelung dalam itertools untuk memampatkan dua senarai dengan panjang yang tidak sama, dan kemudian mewakili output sebagai kamus.
Output kod berikut ialah:
Final Output Dictionary: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 1}
Sama seperti gelung dalam itertools, kita boleh menggunakan deques dalam koleksi. Dengan mengimport deque, kita boleh memampatkan dua senarai dan mendapatkan kamus.
# using deque for zipping lists from collections import deque # define two list that are to be zipped ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = deque([1, 2, 3, 4]) # zip teh lists using deque result = {} for letter in ini_lis1: number = ini_lis2.popleft() result[letter] = number ini_lis2.append(number) # print the final results print("Output Dict : ", str(result))
Seperti yang dapat kita lihat dalam kod di atas, selepas mengimport deque daripada koleksi, dua senarai saiz berbeza ditentukan.
Kemudian gunakan fungsi gelung dan tambah untuk memampatkan dua senarai. Keputusan akhir akan dicetak dalam bentuk kamus.
Output kod ini ialah:
Output Dict : {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 1}
Kelas lalai juga boleh digunakan untuk memampatkan dua senarai saiz berbeza dan memberikan kamus sebagai output.
# using default class method # import default dict from collections from collections import defaultdict # define two lists ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = [1, 2, 3, 4] # use default dict result = defaultdict(int) # add values to the keys respectively for i in range(len(ini_lis1)): result[ini_lis1[i]] += ini_lis2[i % len(ini_lis2)] # print the final results print("Output Dict: ", str(dict(result)))
Seperti yang kita lihat dalam kod di atas, dua senarai ditakrifkan selepas mengimport kelas lalai dan menggunakan gelung for untuk menambah nilai pada kekunci yang sepadan.
Sila ambil perhatian bahawa jika kunci tidak terdapat dalam data, ia akan mengembalikan nilai lalai. Di sini kita menggunakan nilai lalai 0.
Output kod berikut ialah:
Output Dict: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 1}
Ini ialah cara paling mudah untuk zip dua senarai berbeza dan mengeluarkannya sebagai kamus.
# using zip + dict method # define two lists that are to be zipped ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = [1, 2, 3, 4] # use zip() result = dict(zip(ini_lis1, ini_lis2 * ((len(ini_lis1) + len(ini_lis2) - 1) // len(ini_lis2)))) # print the final results print("Output Dict: ", str(result))
Dalam kod di atas, kami mula-mula mentakrifkan dua senarai berbeza dan kemudian semasa mentakrifkan hasilnya, hantar sintaks atau kod ke dict() yang akan mengembalikan output dalam format data kamus. Di sini, dua senarai dimampatkan bersama menggunakan kata kunci zip, yang menambahkan nilai dua senarai berbeza bersama-sama.
Output kod berikut ialah:
Output Dict: {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 1}
Dalam kaedah ini, kami akan menggunakan perpustakaan Itertools dan menggunakan enumerate dalam proses memampatkan dua senarai.
# using itertools + enumerate # Import itertools from itertools import cycle # define two lists ini_lis1 = ['a', 'b', 'c', 'd', 'e'] ini_lis2 = [1, 2, 3, 4] # zip the two lists using for loop and enumerate result = {v: ini_lis2[i % len(ini_lis2)] for i, v in enumerate(ini_lis1)} # print the final results print("Output Dict : ", str(result))
Seperti yang dapat kita lihat dalam kod di atas, kita mula-mula mengimport kitaran daripada itertools dan kemudian menentukan dua senarai saiz yang berbeza. Kemudian menggunakan fungsi gelung for dan enumerate, kami menambah (mampat) nilai atau elemen dua senarai berbeza dan kemudian nilai diwakili dalam bentuk kamus.
Output kod berikut ialah:
Output Dict : {'a': 1, 'b': 2, 'c': 3, 'd': 4, 'e': 1}
Dalam artikel ini, kami membincangkan menggunakan enam kaedah berbeza untuk memampatkan dua senarai saiz berbeza dalam Python, dan memberikan contoh dan arahan kod. Artikel ini akan membantu pembaca melakukan operasi yang serupa jika diperlukan.
Atas ialah kandungan terperinci Memadatkan dua senarai yang tidak sama panjang ke dalam kamus Python. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!