Bagaimana Anda memeriksa apakah kunci ada dalam kamus python?

Untuk sekadar memeriksa apakah ada kunci dalam kamus Python, Anda dapat menggunakan operator in untuk mencari melalui kunci kamus seperti ini

pets = {'cats': 1, 'dogs': 2, 'fish': 3}

if 'dogs' in pets:
    print('Dogs found!')

# Dogs found!

Pertimbangan kinerja

Kamus dapat menjadi struktur data yang nyaman untuk menghitung kemunculan item. Katakanlah misalnya Anda ingin menghitung jumlah kata dalam tubuh teks

Meskipun tampaknya intuitif untuk menggunakan pola if / else seperti berikut untuk menghitung item

text = [] # a list of words
word_count = {}
for word in text:
    if word in word_count
        word_count[word] += 1
    else:
        word_word[count] = 1
_

beberapa orang telah menunjukkan bahwa pola try / except seperti di bawah ini dapat menghasilkan kinerja yang lebih baik. Namun, sebenarnya ada situasi berbeda di mana setiap pola lebih unggul

text = [] # a list of words.

word_count = {}
for word in text:
    try:
        word_count += 1
    except:
        word_count = 1

Jadi, kapan sebaiknya Anda menggunakan pola try / except alih-alih pola if / else? . Artinya jika kurang dari 22% dari semua kata yang dihitung dalam badan teks adalah unik, pola try / except akan lebih cepat

Pola try / except_ lebih cepat ketika Anda memiliki sedikit pengecualian yang akan dimunculkan, dengan kata lain ada banyak kata atau kunci rangkap yang Anda hitung. Jadi cara ini akan cocok ketika Anda menghitung daftar yang berisi kumpulan kata yang sering diulang tanpa banyak kemungkinan kata lain yang mungkin hanya dihitung satu kali.

Namun, jika kata atau kunci yang Anda hitung sebagian besar unik, biaya untuk memunculkan pengecualian setiap kali membuat pola try / except lebih lambat daripada pola if / else

Untuk perbandingan yang lebih praktis, biasanya 50% - 62% kata dalam artikel berita (diuji di The Economist, The Guardian, dan BBC News) bersifat unik, sehingga membuat pola if / else lebih cepat untuk menghitung badan teks yang lebih beragam

Di bawah ini adalah beberapa hasil benchmark dari pengujian tersebut

# dictionary.txt (one word on each line)
if/else: 0.1533535360
try/except: 0.2706389330
total words: 370103
unique words: 370103
ratio: 1.00

# article.txt (article from The Economist)
if/else: 0.0002584480
try/catch: 0.0002763390
total words: 616
unique words: 374
ratio: 0.61

# balanced.txt (text with 22% unique words)
if/else: 0.0002434520
try/catch: 0.0002434670
total words: 895
unique words: 194
ratio: 0.22

Bagi yang tertarik, Anda dapat meninjau kode sumber yang digunakan untuk pengujian ini


Bergabunglah dengan Jaringan Pengembang yang Mampu

Jika Anda menyukai postingan ini, Anda mungkin tertarik dengan jaringan pengembang Able, tempat baru bagi pengembang untuk membuat blog dan mencari pekerjaan

Dalam tutorial ini, Anda akan belajar cara menggunakan Python untuk memeriksa apakah ada kunci di kamus. Anda juga akan mempelajari cara memeriksa apakah suatu nilai ada di kamus. Anda akan mempelajari cara melakukan ini menggunakan operator

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
1, metode
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2, fungsi
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
3, dan metode
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
4 dan
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
5

Mengetahui cara bekerja dengan kamus Python adalah keterampilan yang penting. Ini bisa sangat membantu saat bekerja dengan API web yang mengembalikan data JSON

Meskipun kami dapat dengan mudah mengindeks kamus, jika kunci tidak ada,

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
6 akan dilemparkan. Ini akan menyebabkan beberapa masalah yang signifikan dalam program Anda, kecuali kesalahan ini ditangani

Alternatif yang jauh lebih aman untuk menggunakan pengindeksan kamus, adalah dengan terlebih dahulu memeriksa apakah kunci yang diberikan ada di kamus. Mari kita mulai belajar

Jawaban Cepat. Gunakan

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_1 untuk melihat apakah ada kunci

Bagaimana Anda memeriksa apakah kunci ada dalam kamus python?

Daftar isi

Apa itu Kamus Python?

Kamus dalam Python adalah salah satu struktur data bawaan utama. Mereka terdiri dari

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
8 pasangan yang memudahkan pencarian nilai item, jika Anda tahu kunci yang sesuai. Salah satu atribut unik kamus adalah bahwa kunci harus unik, tetapi nilainya dapat digandakan

Mari kita lihat bagaimana tampilan kamus dengan Python. Mereka dibuat menggunakan

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
9 kurung kurawal dan pasangan
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
8 dipisahkan dengan koma

Mari kita buat kamus bernama

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
1, yang berisi usia orang yang berbeda

ages = {
    'Matt': 30,
    'Katie': 29,
    'Nik': 31,
    'Jack': 43,
    'Alison': 32,
    'Kevin': 38
}

Salah satu cara yang sering diajarkan kepada Anda untuk mengakses nilai kamus adalah dengan menggunakan pengindeksan melalui tanda kurung siku

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
2. Di bagian selanjutnya, Anda akan melihat cara kerja pengindeksan kamus dan mengapa itu tidak selalu merupakan opsi terbaik. Setelah itu, Anda akan mempelajari berbagai metode untuk memastikan bahwa kunci itu ada

Masalah dengan Pengindeksan Kamus Python

Mengindeks kamus adalah cara mudah untuk mendapatkan nilai kunci kamus – jika kunci yang diberikan ada di kamus. Mari kita lihat cara kerja pengindeksan kamus. Kami akan menggunakan pengindeksan kamus untuk mendapatkan nilai kunci

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
3 dari kamus kami
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
1

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_

Kita dapat melihat di sini bahwa ini bekerja dengan baik. Karena itu, mari kita lihat apakah kita mencoba mendapatkan nilai untuk kunci

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
5, yang tidak ada dalam kamus

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'

Kita dapat melihat di sini, bahwa jika kita mencoba mengakses nilai kamus untuk kunci yang tidak ada,

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
6 dilemparkan. Ini memiliki beberapa implikasi besar untuk kode Anda. Kecuali kesalahan ditangani secara eksplisit, program akan gagal. Salah satu cara untuk menghindari
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
6 adalah memastikan bahwa kunci benar-benar ada di kamus Python

Itulah tepatnya yang akan Anda pelajari di beberapa bagian berikutnya. Mari kita mulai

Gunakan Python untuk Memeriksa apakah Kunci Ada. Metode kunci Python

Kamus Python hadir dengan metode bawaan yang memungkinkan kita menghasilkan objek seperti daftar yang berisi semua kunci dalam kamus. Mudahnya, ini disebut metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
4

Mencetak

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Jill'])

KeyError: 'Jill'
_9 terlihat seperti ini

print(ages.keys())
# Returns: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])

Kita bisa melihat tampilannya sedikit seperti daftar. Kami sekarang dapat memeriksa apakah ada kunci di objek seperti daftar itu

Mari kita lihat bagaimana kita dapat menggunakan metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_4 untuk melihat apakah kunci ada di kamus. Mari gunakan metode ini untuk melihat apakah ada kunci

# Check if a key exists in a Python dictionary by checking all keys
ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

some_key = 'James'
if some_key in ages.keys():
    print('Key exists')
else:
    print('Key doesn\'t exist')

# Returns Key doesn't exist

Kita dapat melihat di sini bahwa kita memeriksa apakah kunci yang disediakan,

print(ages.keys())
# Returns: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])
1, ada atau tidak dalam kunci kamus kita. Dalam hal ini, kuncinya tidak ada dan program dicetak
print(ages.keys())
# Returns: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])
2

Di bagian selanjutnya, Anda akan mempelajari cara menyederhanakan ini lebih jauh

Gunakan Python untuk Memeriksa apakah Kunci Ada. Python di Operator

Metode di atas berfungsi dengan baik, tetapi kita dapat lebih menyederhanakan pemeriksaan apakah kunci yang diberikan ada dalam kamus Python. Kami benar-benar dapat menghilangkan metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
4 sepenuhnya, dan menggunakan operator
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
1 akan memindai semua kunci dalam kamus

Mari kita lihat bagaimana ini bekerja dalam praktiknya

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

some_key = 'Nik'
if some_key in ages:
    print('Key exists')
else:
    print('Key doesn\'t exist')

# Returns: Key exists

Kita dapat melihat di sini bahwa metode kita sebenarnya terlihat sangat mirip dengan yang di atas, tetapi kita dapat menghapus metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
4 seluruhnya. Ini sebenarnya membantu kode membaca sedikit lebih banyak bahasa sederhana

di bagian berikutnya, Anda akan mempelajari cara mengambil nilai kunci, meskipun kunci tidak ada

Lihat beberapa tutorial Python lainnya tentang datagy, termasuk panduan lengkap kami untuk menata gaya Panda dan ikhtisar komprehensif kami tentang Tabel Pivot di Panda

Menggunakan. dapatkan Metode untuk Memeriksa apakah Kunci Ada dalam Kamus Python

Bekerja dengan kamus di Python umumnya melibatkan mendapatkan nilai kunci – tidak hanya memeriksa apakah itu ada. Anda telah mempelajari sebelumnya bahwa hanya dengan mengindeks kamus akan memunculkan

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
6 jika kunci tidak ada. Bagaimana kita bisa melakukan ini dengan aman, tanpa merusak program?

Jawabannya adalah dengan menggunakan metode Python

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2. Metode
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2 hanya akan mengembalikan
print(ages.keys())
# Returns: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])
9 jika kunci tidak ada. Mari kita coba ini

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

print(ages.get('Jack'))
print(ages.get('Jill'))

# Returns:
# 43
# None

Kita dapat melihat di sini bahwa ketika metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2 diterapkan untuk mengembalikan kunci yang ada, nilai kunci tersebut dikembalikan dengan benar. Ketika kunci tidak ada, program terus berjalan, tetapi mengembalikan
print(ages.keys())
# Returns: dict_keys(['Matt', 'Katie', 'Nik', 'Jack', 'Alison', 'Kevin'])
9

Apa yang sangat membantu tentang metode Python

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_2, adalah memungkinkan kita untuk mengembalikan nilai, bahkan jika kunci tidak ada

Katakanlah kami ingin program kami memberi tahu kami bahwa kunci tidak ada. Kita dapat meminta metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_2 untuk mengembalikan “Kunci tidak ada. ”

Mari kita lihat bagaimana kita bisa melakukan ini

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

print(ages.get('Jill', "The key doesn't exist"))

# Returns: "The key doesn't exist!"

Metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2 adalah cara yang bagus dan aman untuk melihat apakah ada kunci dalam kamus Python. Sekarang, mari belajar untuk melihat apakah nilai yang diberikan ada atau tidak dalam kamus Python

Periksa apakah Nilai Ada di Kamus Python Menggunakan. nilai()

Mirip dengan metode kamus Python

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
4, kamus memiliki metode
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
5 yang sesuai, yang mengembalikan objek seperti daftar untuk semua nilai dalam kamus

Mari kita lihat bagaimana kita bisa mengakses semua nilai kamus

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

print(ages.values())
#Returns: dict_values([30, 29, 31, 43, 32, 38])

Kita dapat menggunakan ini untuk melihat apakah ada nilai atau tidak. Katakanlah kami ingin tahu apakah usia 27 ada di kamus kami, kami dapat menulis yang berikut ini

ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}

some_age = 27

if some_age in ages.values():
    print('Age exists!')
else:
    print("Age doesn't exist!")

# Returns: Age doesn't exist!

Sekarang, bagaimana jika kita ingin mengembalikan kunci atau kunci untuk nilai tertentu. Kita dapat melakukannya dengan aman menggunakan pemahaman daftar, yang akan memiliki tiga permutasi

  1. Jadilah daftar kosong, jika nilainya tidak ada,
  2. Miliki satu item, jika nilainya ada satu kali
  3. Memiliki lebih dari satu item, jika nilainya ada lebih dari satu kali

Mari gunakan kamus yang sedikit dimodifikasi untuk melihat ini beraksi

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_0

Kami telah membuat daftar pemahaman yang menambahkan setiap kunci, jika nilai kunci tersebut sama dengan 43

Apa itu Pemahaman Daftar Python?

Kesimpulan

Di posting ini, Anda belajar cara memeriksa apakah kunci ada di kamus Python. Anda telah mempelajari cara melakukannya dengan metode

>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
_4, operator
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
1, dan metode
>>> ages = {'Matt': 30, 'Katie': 29, 'Nik': 31, 'Jack': 43, 'Alison': 32, 'Kevin': 38}
>>> print(ages['Nik'])

31
2. Anda juga belajar cara melihat apakah nilai yang diberikan ada di kamus Python dan cara mendapatkan kunci nilai itu

Bagaimana Anda menguji apakah kunci ada dalam kamus?

1. Bagaimana Anda memeriksa apakah kunci ada atau tidak dalam kamus? . using if-in statement/in operator, get(), keys(), handling 'KeyError' exception, and in versions older than Python 3, using has_key().

Bagaimana Anda memeriksa apakah kunci tidak ada di dict Python?

Mencari nilai yang tidak ada di dict akan memunculkan KeyError -- gunakan "in" untuk memeriksa apakah kunci ada di dict, or use dict. get(key) which returns the value or None if the key is not present (or get(key, not-found) allows you to specify what value to return in the not-found case).