> For the complete documentation index, see [llms.txt](https://python-codelivly.gitbook.io/python-mastery-from-beginner-to-expert/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://python-codelivly.gitbook.io/python-mastery-from-beginner-to-expert/python-data-types/dictionary.md).

# Dictionary

A Python dictionary is an unordered collection of key-value pairs that is mutable, meaning you can change its contents, unlike tuples and strings. It is also known as associative arrays, hash tables, or simply hashes. Each key-value pair in a dictionary is separated by a colon (:), and the pairs are separated from each other by commas. A dictionary is defined within curly braces ({}) and can be assigned to a variable just like any other data type in Python.

Dictionaries are extremely useful when it comes to dealing with large data sets or datasets where the position of data is not important. Instead, what is important is the association between two pieces of information.

In Python, dictionaries are implemented as hash tables, which means that the time complexity for accessing, inserting, or deleting a key-value pair is O(1), making them very efficient for many use cases.&#x20;

## Creating a Dictionary&#x20;

In Python, we can create a dictionary by enclosing a comma-separated list of key-value pairs inside curly braces `{}`. Each key-value pair is separated by a colon `:`. Here is an example:

```python
# create a dictionary
person = {'name': 'John', 'age': 30, 'city': 'New York'}

# print the dictionary
print(person)
```

Output:

```python
{'name': 'John', 'age': 30, 'city': 'New York'}
```

In the example above, we created a dictionary called `person` that contains three key-value pairs: `'name': 'John'`, `'age': 30`, and `'city': 'New York'`. We then printed the dictionary using the `print()` function.&#x20;

## Accessing Elements from a Dictionary&#x20;

We can access the elements of a dictionary by referring to its key name, inside square brackets or by using the `get()` method.

Example using square brackets:

```python
my_dict = {"name": "John", "age": 28, "location": "New York"}

print(my_dict["name"])    # Output: John
print(my_dict["age"])     # Output: 28
```

Example using the `get()` method:

```python
my_dict = {"name": "John", "age": 28, "location": "New York"}

print(my_dict.get("name"))    # Output: John
print(my_dict.get("age"))     # Output: 28
```

If we try to access a key that does not exist in the dictionary using square brackets, we will get a `KeyError`. However, if we use the `get()` method and the key does not exist in the dictionary, it will return `None` (or a default value we can specify).

```python
my_dict = {"name": "John", "age": 28, "location": "New York"}

print(my_dict["occupation"])          # Output: KeyError: 'occupation'
print(my_dict.get("occupation"))      # Output: None
print(my_dict.get("occupation", "-")) # Output: -
```

## Updating and Adding Elements to a Dictionary&#x20;

To update an element in a dictionary, we can simply access the key and reassign a new value to it. If the key does not exist, it will be added as a new key-value pair.

Here's an example:

```python
# create a dictionary
my_dict = {'apple': 2, 'banana': 4, 'orange': 1}

# update the value of 'apple'
my_dict['apple'] = 3

# add a new key-value pair
my_dict['pear'] = 5

print(my_dict)  # {'apple': 3, 'banana': 4, 'orange': 1, 'pear': 5}
```

In this example, we first created a dictionary `my_dict` with three key-value pairs. Then we updated the value of the key `'apple'` to `3`. Finally, we added a new key-value pair `'pear': 5'` to the dictionary.

## Removing Elements from a Dictionary&#x20;

We can remove elements from a dictionary in several ways, using the `del` keyword, `pop()` method, and `clear()` method.

1. Using the `del` keyword:

We can use the `del` keyword to remove a specific key-value pair from the dictionary. Here's an example:

```python
my_dict = {'name': 'John', 'age': 25, 'gender': 'male'}
del my_dict['gender']
print(my_dict)   # Output: {'name': 'John', 'age': 25}
```

2. Using the `pop()` method:

We can use the `pop()` method to remove a specific key-value pair from the dictionary and return the value of the removed key. Here's an example:

```python
my_dict = {'name': 'John', 'age': 25, 'gender': 'male'}
removed_value = my_dict.pop('gender')
print(my_dict)           # Output: {'name': 'John', 'age': 25}
print(removed_value)     # Output: 'male'
```

3. Using the `clear()` method:

We can use the `clear()` method to remove all the key-value pairs from the dictionary. Here's an example:

```python
my_dict = {'name': 'John', 'age': 25, 'gender': 'male'}
my_dict.clear()
print(my_dict)   # Output: {}
```

## Change Value of Dictionary

To change the value of a dictionary, you can simply assign a new value to the corresponding key. Here's an example:

```python
# create a dictionary
my_dict = {'name': 'John', 'age': 25, 'city': 'New York'}

# change the value of 'age' key
my_dict['age'] = 30

# print the updated dictionary
print(my_dict)
```

Output:

```python
{'name': 'John', 'age': 30, 'city': 'New York'}
```

In the above example, we first created a dictionary `my_dict` with three key-value pairs. Then we changed the value of the `'age'` key to `30` by assigning a new value to it. Finally, we printed the updated dictionary.&#x20;

## Dictionary Methods &#x20;

Methods that are available with a dictionary are tabulated below. Some of them have already been used in the above examples.

| Method                | Description                                                                                                                                              |
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `clear()`             | Removes all items from the dictionary                                                                                                                    |
| `copy()`              | Returns a shallow copy of the dictionary                                                                                                                 |
| `fromkeys(seq[, v])`  | Returns a new dictionary with keys from `seq` and value `v`                                                                                              |
| `get(key[,d])`        | Returns the value of the key `key`. If the key doesn't exist, returns `d` (defaults to `None`)                                                           |
| `items()`             | Returns a view object of the dictionary's (key, value) pairs                                                                                             |
| `keys()`              | Returns a view object of the dictionary's keys                                                                                                           |
| `pop(key[,d])`        | Removes the key and returns the associated value. If the key doesn't exist and `d` is not provided, raises a `KeyError`. If `d` is provided, returns `d` |
| `popitem()`           | Removes and returns an arbitrary (key, value) pair. Raises a `KeyError` if the dictionary is empty                                                       |
| `setdefault(key[,d])` | Returns the value of the key. If the key doesn't exist, inserts the key with a value of `d` (defaults to `None`)                                         |
| `update([other])`     | Updates the dictionary with the key/value pairs from `other`. If a key already exists in the dictionary, its value is updated                            |
| `values()`            | Returns a view object of the dictionary's values                                                                                                         |

## Dictionary Membership Test <a href="#membership" id="membership"></a>

In Python, we can use the `in` keyword to check if a key is present in a dictionary. Here is an example:

```python
my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'a' in my_dict:
    print('Key "a" is present in the dictionary')
else:
    print('Key "a" is not present in the dictionary')
```

Output:

```vbnet
Key "a" is present in the dictionary
```

We can also use the `not in` keyword to check if a key is not present in a dictionary. Here is an example:

```python
my_dict = {'a': 1, 'b': 2, 'c': 3}

if 'd' not in my_dict:
    print('Key "d" is not present in the dictionary')
else:
    print('Key "d" is present in the dictionary')
```

Output:

```vbnet
Key "d" is not present in the dictionary
```

## Iterating Through a Dictionary <a href="#iterate" id="iterate"></a>

You can iterate through a dictionary using a for loop to access each key-value pair of the dictionary. Here is an example:

```python
my_dict = {"apple": 2, "banana": 4, "orange": 1}

# iterating through the dictionary
for key, value in my_dict.items():
    print(key, value)
```

Output:

```python
apple 2
banana 4
orange 1
```

In this example, the `items()` method is used to access the key-value pairs of the dictionary, and then a for loop is used to iterate through the pairs. The `key` and `value` variables are used to store the key and value of each pair in each iteration of the loop.

## Looping Techniques with Dictionaries  <a href="#membership" id="membership"></a>

In Python, there are several looping techniques that can be used to iterate through a dictionary. Here are some of them:

1. Looping through keys:

We can use a `for` loop to iterate over the keys of a dictionary. Here's an example:

```python
my_dict = {'apple': 3, 'banana': 2, 'orange': 1}

for key in my_dict:
    print(key)
```

Output:

```
apple
banana
orange
```

2. Looping through values:

We can also use a `for` loop to iterate over the values of a dictionary. Here's an example:

```python
my_dict = {'apple': 3, 'banana': 2, 'orange': 1}

for value in my_dict.values():
    print(value)
```

Output:

```python
3
2
1
```

3. Looping through key-value pairs:

We can use a `for` loop to iterate over the key-value pairs of a dictionary using the `items()` method. Here's an example:

```python
my_dict = {'apple': 3, 'banana': 2, 'orange': 1}

for key, value in my_dict.items():
    print(key, value)
```

Output:

```python
apple 3
banana 2
orange 1
```

4. Using List Comprehensions:

We can also use list comprehensions to iterate over the keys, values, or items of a dictionary. Here are some examples:

```python
my_dict = {'apple': 3, 'banana': 2, 'orange': 1}

# List comprehension to get all the keys
keys = [key for key in my_dict]
print(keys)

# List comprehension to get all the values
values = [value for value in my_dict.values()]
print(values)

# List comprehension to get all the key-value pairs
items = [(key, value) for key, value in my_dict.items()]
print(items)
```

Output:

```css
['apple', 'banana', 'orange']
[3, 2, 1]
[('apple', 3), ('banana', 2), ('orange', 1)]
```

## Built-in Functions with Dictionaries&#x20;

| Function            | Description                                                                                                       |
| ------------------- | ----------------------------------------------------------------------------------------------------------------- |
| `len()`             | Returns the number of items (key-value pairs) in a dictionary                                                     |
| `str()`             | Produces a printable string representation of a dictionary                                                        |
| `type()`            | Returns the type of the passed variable. If passed variable is dictionary, then it would return a dictionary type |
| `dict()`            | Constructor method to create a dictionary                                                                         |
| `clear()`           | Removes all elements of dictionary `dict`                                                                         |
| `copy()`            | Returns a shallow copy of dictionary `dict`                                                                       |
| `fromkeys()`        | Returns a new dictionary with keys from `seq` and values set to value(default is None)                            |
| `get(key, default)` | Returns the value for the given key if it exists, else returns the default value                                  |
| `items()`           | Returns a list of the key-value pairs in the dictionary                                                           |
| `keys()`            | Returns a list of the keys in the dictionary                                                                      |
| `values()`          | Returns a list of the values in the dictionary                                                                    |
| `pop(key)`          | Removes and returns the value for the given key if it exists, else returns the default value                      |
| `popitem()`         | Removes and returns an arbitrary key-value pair from the dictionary                                               |
| `update()`          | Adds dictionary `dict2` to dictionary `dict`                                                                      |


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://python-codelivly.gitbook.io/python-mastery-from-beginner-to-expert/python-data-types/dictionary.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
