Program Python untuk mengekstrak N kunci kamus terbesar

王林
Lepaskan: 2023-09-08 22:29:02
ke hadapan
1099 orang telah melayarinya

Program Python untuk mengekstrak N kunci kamus terbesar

Kamus Python ialah struktur data yang boleh digunakan untuk pelbagai operasi, menjadikannya alat pengaturcaraan yang prolifik. Ia menyimpan data dalam bentuk pasangan nilai kunci, iaitu setiap data boleh ditandakan dengan kunci unik. Kunci dalam kamus ialah pengecam yang dikaitkan dengan nilai berbeza yang boleh diakses, diubah suai dan dipadamkan.

Kunci boleh diisih dan diekstrak dalam susunan yang berbeza bergantung pada tugas. Dalam artikel ini, kita akan membincangkan konsep serupa untuk mengekstrak kunci kamus N maksimum . Kami akan mengendalikan kunci unik ini dan mengekstrak data yang berkaitan.

Pemahaman Soalan

Pertimbangkan kamus dengan nilai kunci unik rawak, tugas kami adalah untuk memisahkan kunci N terbesar daripada kamus. Marilah kita memahami perkara ini melalui contoh -

Senario input dan output

Mari kita pertimbangkan kamus dengan nilai berikut -

Input:
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
Salin selepas log masuk

Jika nilai N ialah 4, kembalikan empat nilai kunci terbesar dalam kamus asal.

Output: [22, 20, 18, 12]
Salin selepas log masuk

Kembalikan paling banyak nilai kunci N. Sekarang setelah kita memahami pernyataan masalah, mari kita bincangkan beberapa penyelesaian.

Gunakan lelaran dan Max()

Ini adalah kaedah asas untuk mengekstrak kunci N terbesar daripada kamus. Kami akan mencipta kamus dan dua senarai kosong untuk menyimpan nilai maksimum dan nilai rujukan masing-masing. Selepas itu, kami akan lulus nilai “N” dan mengekstrak nilai kunci dengan bantuan lelaran dan kaedah “.items()”.

Nilai yang diekstrak ini akan disimpan dalam senarai (Maxlis). Kami akan mengulangi kekunci kamus yang dilampirkan "N" sekali lagi dan mengekstrak semua nilai maksimum. Pada setiap lelaran, nilai kunci terbesar dialih keluar daripada senarai dan senarai dengan kunci N terbesar (Terbesar) dicetak.

Contoh

Berikut ialah contoh mengekstrak kunci kamus terbesar N menggunakan lelaran dan penambahan -

dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
Maxlis = []
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")

for keys, values in dict1.items():
   Maxlis.append(keys)

for x in range(N):
   maxval = max(Maxlis)
   Nlargest.append(maxval)
   Maxlis.remove(maxval)

print(f"The list of N largest dictionaries keys: {Nlargest}")
Salin selepas log masuk

Output

The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The list of N largest dictionaries keys: [22, 20, 18, 12]
Salin selepas log masuk

Menggunakan lelaran dengan Sorted() + Lambda

Ini ialah kaedah lanjutan untuk mengekstrak kunci N terbesar. Dalam kaedah ini kami akan mendapatkan semula semua kunci kamus menggunakan kaedah lelaran dan ".items()". Kami akan menggunakan "key" parameter dalam "sorted()" fungsi untuk menentukan fungsi lain (lambda) untuk mengendalikan logik pengekstrakan. Fungsi lambda mengekstrak kekunci dan fungsi sorted() menyusunnya mengikut tertib.

Klausa "reverse = True" mengisih nilai kunci dalam tertib menurun. Akhir sekali, kami menggunakan teknik menghiris untuk mengekstrak hanya kekunci N pertama daripada kamus dan menyimpannya dalam senarai (Terbesar).

Contoh

Berikut adalah contoh -

dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")

for keys, values in sorted(dict1.items(), key = lambda item : item[0],
   reverse = True) [:N]:
   Nlargest.append(keys)
print(f"The N largest keys are: {Nlargest}")
Salin selepas log masuk

Output

The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The N largest keys are: [22, 20, 18, 12]
Salin selepas log masuk
Salin selepas log masuk

Gunakan Sorted() + Itemgetter()

Daripada menggunakan fungsi lambda untuk mengekstrak item, kita boleh menggunakan fungsi "itemgetter()" dalam modul operator. Kami akan menggunakan konsep lelaran dan kekunci pengisihan yang sama, tetapi parameter "key" akan diberikan fungsi "itemgetter()" untuk mengekstrak kunci.

Contoh

Berikut adalah contoh -

from operator import itemgetter
dict1 = {12 : 10, 22 : 12, 18 : 4, 4 : 8, 20 : 14, 9 : 13}
N = 4
Nlargest = []
print(f"The original dictionary is: {dict1}")

for keys, values in sorted(dict1.items(), key = itemgetter(0),
   reverse = True) [:N]:
   Nlargest.append(keys)
print(f"The N largest keys are: {Nlargest}")
Salin selepas log masuk

Output

The original dictionary is: {12: 10, 22: 12, 18: 4, 4: 8, 20: 14, 9: 13}
The N largest keys are: [22, 20, 18, 12]
Salin selepas log masuk
Salin selepas log masuk

Penyelesaian dan Wawasan Lain

Terdapat pelbagai teknik untuk mengekstrak kunci N terbesar daripada kamus, termasuk menggunakan fungsi "nlargest()" daripada modul "heapq" dan pengisihan berasaskan fungsi. Menetapkan nilai yang betul untuk fungsi "lambda" dan "itemgetter" adalah sangat penting kerana ia menetapkan peringkat untuk pengisihan dan pengekstrakan item.

KESIMPULAN

Dalam artikel ini, kami membincangkan pelbagai penyelesaian untuk mengekstrak N nilai kamus maksimum. Kami bermula dengan pendekatan asas dan kasar untuk mengasingkan dan melampirkan kunci terbesar. Selepas itu, kami membincangkan beberapa penyelesaian lanjutan untuk menjana program terperinci dan dioptimumkan. Kami mempelajari tentang aplikasi fungsi sorted(), lambda, itemgetter dan max().

Atas ialah kandungan terperinci Program Python untuk mengekstrak N kunci kamus terbesar. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:tutorialspoint.com
Kenyataan Laman Web ini
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan