Проверка ключа массива python

Python: Check if Key Exists in Dictionary

Dictionary (also known as “map”, “hash” or “associative array”) is a built-in Python container that stores elements as a key-value pair.

Just like other containers have numeric indexing, here we use keys as indexes. Keys can be numeric or string values. However, no mutable sequence or object can be used as a key, like a list.

In this article, we’ll take a look at how to check if a key exists in a dictionary in Python.

In the examples, we’ll be using this fruits_dict dictionary:

fruits_dict = dict(apple= 1, mango= 3, banana= 4) 

Check if Key Exists using in Operator

The simplest way to check if a key exists in a dictionary is to use the in operator. It’s a special operator used to evaluate the membership of a value.

Here it will either evaluate to True if the key exists or to False if it doesn’t:

key = 'orange' if key in fruits_dict: print('Key Found') else: print('Key not found') 

Now, since we don’t have an orange in our dictionary, this is the result:

This is the intended and preferred approach by most developers. Under the hood, it uses the __contains__() function to check if a given key is in a dictionary or not.

Check if Key Exists using get()

The get() function accepts a key , and an optional value to be returned if the key isn’t found. By default, this optional value is None . We can try getting a key, and if the returned value is None , that means it’s not present in the dictionary:

key = 'orange' if fruits_dict.get(key) == None: print('Key not found') else: print('Key found') 

Check if Key Exists using keys()

The keys() function returns the keys from our dictionary as a sequence:

dict_keys(['apple', 'mango', 'banana']) 

Using this sequence, we can check if the key is present. You can do this through a loop, or better yet, use the in operator:

key = 'orange' if key in fruits_dict.keys(): print('Key found') else: print('Key not found') 

Check if Key Exists using has_key()

Instead of manually getting the keys and running a check if the value we’re searching for is present, we can use the short-hand has_key() function:

Free eBook: Git Essentials

Check out our hands-on, practical guide to learning Git, with best-practices, industry-accepted standards, and included cheat sheet. Stop Googling Git commands and actually learn it!

key = 'orange' if fruits_dict.has_key(key): print('Key found') else: print('Key not found') 

It returns True or False , based on the presence of the key. This code outputs:

Читайте также:  Долго ли учить php новичку

Handling ‘KeyError’ Exception

An interesting way to avoid problems with a non-existing key or in other words to check if a key exists in our dictionary or not is to use the try and except clause to handle the KeyError exception.

The following exception is raised whenever our program fails to locate the respective key in the dictionary.

It is a simple, elegant, and fast way to handle key searching:

try: fruits_dictПроверка ключа массива python except KeyError as err: print('Key not found') 

This approach, although it may sound unintuitive, is actually significantly faster than some other approaches we’ve covered so far.

Note: Please note, exceptions shouldn’t be used to alter code flow or to implement logic. They fire really fast, but recovering from them is really slow. This approach shouldn’t be favored over other approaches, when possible.

Let’s compare the performance of them to get a better idea of how fast they can execute.

Performance Comparison

import timeit code_setup = """ key = 'orange' fruits_dict = dict(apple= 1, mango= 3, banana= 4) """ code_1 = """ if key in fruits_dict: # print('Key Found') pass else: # print('Key not found') pass """ code_2 = """ if fruits_dict.get(key): # print('Key found') pass else: # print('Key not found') pass """ code_3 = """ if fruits_dict.__contains__(key): # print('Key found') pass else: # print('Key not found') pass """ code_4 = """ try: # fruits_dictПроверка ключа массива python pass except KeyError as err: # print('Key not found') pass """ code_5 = """ if key in fruits_dict.keys(): # print('Key found') pass else: # print('Key not found') pass """ print('Time of code_1: ', timeit.timeit(setup = code_setup , stmt= code_1, number= 10000000)) print('Time of code_2: ', timeit.timeit(setup = code_setup , stmt= code_2, number= 10000000)) print('Time of code_3: ', timeit.timeit(setup = code_setup , stmt= code_3, number= 10000000)) print('Time of code_4: ', timeit.timeit(setup = code_setup , stmt= code_4, number= 10000000)) print('Time of code_5: ', timeit.timeit(setup = code_setup , stmt= code_5, number= 10000000)) 
Time of code_1: 0.2753713619995324 Time of code_2: 0.8163219139996727 Time of code_3: 0.5563563220002834 Time of code_4: 0.1561058730003424 Time of code_5: 0.7869278369998938 

The most popular choice and approach, of using the in operator is fairly fast, and it’s also the intended approach for solving this problem.

Conclusion

In this article, we discussed multiple ways to check if a key exists in our dictionary or not. Then we made a performance comparison.

Источник

Python: Check if a Key (or Value) Exists in a Dictionary (5 Easy Ways)

Python Check if Key Exists in a Dictionary Cover Image

In this tutorial, you’ll learn how to use Python to check if a key exists in a dictionary. You’ll also learn how to check if a value exists in a dictionary. You’ll learn how to do this using the in operator, the .get() method, the has_key() function, and the .keys() and .values() methods.

Knowing how to work with Python dictionaries is an important skill. This can be especially helpful when working with web APIs that return JSON data.

While we can easily index a dictionary, if a key doesn’t exist, a KeyError will be thrown. This will cause some significant problems in your program, unless these errors are handled.

A much more safe alternative to using dictionary indexing, is to first check if a given key exists in a dictionary. Let’s get started learning!

The Quick Answer: Use in to see if a key exists

Читайте также:  Saving data with javascript

Quick Answer - Python Check if Key Exists in a Dictionary

What is a Python Dictionary?

Dictionaries in Python are one of the main, built-in data structures. They consist of key:value pairs that make finding an items value easy, if you know their corresponding key. One of the unique attributes of a dictionary is that keys must be unique, but that values can be duplicated.

Let’s take a look at how dictionaries look in Python. They’re created using <> curly brackets and the key:value pairs are separated by commas.

Let’s create a dictionary called ages , which, well, contains the ages of different people:

One way that you’re often taught to access a dictionary value is to use indexing via the [] square bracket accessing. In the next section, you’ll see how dictionary indexing works and why it’s not always the best option. Following that, you’ll learn different methods of ensuring that a key exists.

The Problem with Indexing a Python Dictionary

Indexing a dictionary is an easy way of getting a dictionary key’s value – if the given key exists in the dictionary. Let’s take a look at how dictionary indexing works. We’ll use dictionary indexing to get the value for the key Nik from our dictionary ages :

We can see here that this worked beautifully. That being said, let’s see if we try to get the value for the key Jill , which doesn’t exist in the dictionary:

>>> ages = >>> print(ages['Jill']) KeyError: 'Jill'

We can see here, that if we try to access a dictionary’s value for a key that doesn’t exist, that a KeyError is thrown. This has some huge implications for your code. Unless the error is explicitly handled, the program will fail. One way to avoid a KeyError is to ensure that a key actually exists in a Python dictionary.

That’s exactly what you’ll learn in the next few sections. Let’s get started!

Use Python to Check if a Key Exists: Python keys Method

Python dictionary come with a built-in method that allows us to generate a list-like object that contains all the keys in a dictionary. Conveniently, this is named the .keys() method.

Printing out dict.keys() looks like this:

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

We can see how that looks like a little bit like a list. We can now check if a key exists in that list-like object!

Let’s see how we can use the .keys() method to see if a key exists in a dictionary. Let’s use this method to see if a key exists:

# Check if a key exists in a Python dictionary by checking all keys ages = some_key = 'James' if some_key in ages.keys(): print('Key exists') else: print('Key doesn\'t exist') # Returns Key doesn't exist

We can see here that we check whether or not a provided key, some_key , exists in the keys of our dictionary. In this case, the key didn’t exist and the program printed out Key doesn’t exist .

In the next section, you’ll learn how to simplify this even further!

Use Python to Check if a Key Exists: Python in Operator

The method above works well, but we can simplify checking if a given key exists in a Python dictionary even further. We can actually omit the .keys() method entirely, and using the in operator will scan all keys in a dictionary.

Читайте также:  Running sql queries in php

Let’s see how this works in practise:

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

We can see here that our method actually looks very similar to the above, but we’ve been able to strip out the .keys() method entirely! This actually helps the code read a bit more plain-language.

in the next section, you’ll learn how to actually retrieve a key’s value, even if a key doesn’t exist!

Use the .get Method to Check if a Key Exists in a Python Dictionary

Working with dictionaries in Python generally involves getting a key’s value – not just checking if it exists. You learned earlier that simply indexing the dictionary will throw a KeyError if a key doesn’t exist. How can we do this safely, without breaking out program?

The answer to this, is to use the Python .get() method. The .get() method will simply return None if a key doesn’t exist. Let’s try this out:

ages = print(ages.get('Jack')) print(ages.get('Jill')) # Returns: # 43 # None

We can see here that when the .get() method is applied to return a key that exists, that key’s value is correctly returned. When a key doesn’t exist, the program continues to run, but it returns None .

What is particularly helpful about the Python .get() method, is that it allows us to return a value, even if a key doesn’t exist.

Say we wanted our program to notify us that a key didn’t exist. We could ask the .get() method to return “Key doesn’t exist!”.

Let’s see how we can do this:

ages = print(ages.get('Jill', "The key doesn't exist")) # Returns: "The key doesn't exist!"

The .get() method is a great and safe way to see if a key exists in a Python dictionary. Now, let’s learn to see whether or not a given value exists in a Python dictionary.

Check if a Value Exists in a Python Dictionary Using .values()

Similar to the Python dictionary .keys() method, dictionaries have a corresponding .values() method, which returns a list-like object for all the values in a dictionary.

Let’s see how we can access all of a dictionary’s values:

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

We can use this to see whether or not a value exists. Say we wanted to know if the age 27 existed in our dictionary, we could write the following:

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

Now, what if we wanted to return the key or keys for a given value. We can safely do this using a list comprehension, which will have three permutations:

  1. Be an empty list, if the value doesn’t exist,
  2. Have one item, if the value exists once
  3. Have more than one item, if the value exists more than once

Let’s use a slightly modified dictionary to see this in action:

# Getting all keys of a certain value in a Python dictionary ages = value_43 = Проверка ключа массива python print(value_43) # Returns: ['Jack', 'Jill']

We’ve created a list comprehension that adds each key, if the value of that key is equal to 43.

What are Python List Comprehensions? To learn more about list comprehensions, check out my comprehensive tutorial here and my in-depth video below!

Источник

Оцените статью