Skip to main content

Python Dictionaries

Python Dictionaries

Dictionaries in Python are powerful, unordered collections used to store key-value pairs, allowing efficient data retrieval by keys. This tutorial explores how to create, manipulate, and use dictionaries effectively, including common methods and operations.


01. What Are Python Dictionaries?

A dictionary is a built-in data type defined using curly braces {}, where each key maps to a value. Keys must be unique and immutable (e.g., strings, numbers), while values can be of any type.

Example: Creating a Dictionary

# Define a dictionary
student = {"name": "Alice", "age": 20, "grade": 85}
scores = {1: "A", 2: "B", 3: "C"}

# Access values
print(student["name"])  # Access by key
print(scores[2])  # Access by key

Output:

Alice
B

Explanation:

  • student["name"] - Retrieves the value associated with the key "name".
  • scores[2] - Retrieves the value for the key 2.

02. Common Dictionary Operations

Dictionaries support operations like adding, updating, and removing key-value pairs, making them ideal for dynamic data storage.

2.1 Adding and Updating Entries

Example: Modifying a Dictionary

profile = {"name": "Bob", "city": "New York"}
profile["age"] = 25  # Add new key-value pair
profile["city"] = "Boston"  # Update existing key
print(profile)

Output:

{'name': 'Bob', 'city': 'Boston', 'age': 25}

2.2 Removing Entries

Example: Removing Key-Value Pairs

user = {"id": 101, "role": "admin", "active": True}
del user["role"]  # Remove specific key
popped_value = user.pop("active")  # Remove and return value
print(user, popped_value)

Output:

{'id': 101} True

2.3 Invalid Dictionary Access

Example: Key Error

data = {"name": "Eve"}
print(data["age"])  # Non-existent key (KeyError)

Output:

KeyError: 'age'

Explanation:

  • data["age"] - Accessing a non-existent key causes a KeyError.

03. Dictionary Methods

Python provides built-in methods to work with dictionaries, such as retrieving keys, values, or items. Below is a summary of common methods:

Method Description Example
get() Retrieves value for a key, with optional default dict.get("key", "default")
keys() Returns all keys dict.keys()
values() Returns all values dict.values()
items() Returns key-value pairs dict.items()


Example: Using Dictionary Methods

info = {"name": "Charlie", "score": 90}
print(info.get("name", "Unknown"))  # Safe access
print(list(info.keys()))  # List of keys
print(list(info.values()))  # List of values
print(list(info.items()))  # List of key-value pairs

Output:

Charlie
['name', 'score']
['Charlie', 90]
[('name', 'Charlie'), ('score', 90)]

04. Dictionary Comprehensions

Dictionary comprehensions offer a concise way to create or transform dictionaries using a single line of code.

Example: Dictionary Comprehension

numbers = [1, 2, 3]
squares = {num: num ** 2 for num in numbers}  # Create key-value pairs
filtered = {k: v for k, v in squares.items() if v > 1}  # Filter by value
print(squares)
print(filtered)

Output:

{1: 1, 2: 4, 3: 9}
{2: 4, 3: 9}

4.1 Invalid Comprehension Syntax

Example: Syntax Error

numbers = [1, 2, 3]
invalid = {num: num * 2 for number in numbers}  # Incorrect variable name (SyntaxError)

Output:

SyntaxError: duplicate argument 'num' in dictionary comprehension

Explanation:

  • {num: num * 2 for number in numbers} - Mismatched variable names cause a SyntaxError.

05. Effective Usage

5.1 Recommended Practices

  • Use descriptive keys to indicate the data’s purpose.

Example: Descriptive Keys

# Good: Clear keys
employee = {"id": 101, "department": "HR"}

# Avoid: Unclear
data = {"x": 101, "y": "HR"}
  • Use get() to safely access keys and avoid KeyError.
  • Keep dictionaries focused on related key-value pairs.

5.2 Practices to Avoid

  • Avoid using mutable objects (e.g., lists) as keys.

Example: Invalid Key Type

invalid = {[1, 2]: "value"}  # List as key (TypeError)

Output:

TypeError: unhashable type: 'list'
  • Don’t overuse comprehensions for complex logic (use loops for clarity).

06. Common Use Cases

6.1 Storing Structured Data

Dictionaries are perfect for organizing data with meaningful keys, such as user profiles.

Example: User Profile

user = {"name": "Dave", "email": "dave@example.com", "age": 30}
print(f"User: {user['name']}, Email: {user.get('email', 'N/A')}")

Output:

User: Dave, Email: dave@example.com

6.2 Counting Occurrences

Dictionaries can track the frequency of items in a collection.

Example: Counting Items

items = ["apple", "banana", "apple", "cherry"]
counts = {}
for item in items:
    counts[item] = counts.get(item, 0) + 1
print(counts)

Output:

{'apple': 2, 'banana': 1, 'cherry': 1}

Conclusion

Python dictionaries are essential for storing and retrieving data using key-value pairs. By mastering dictionary operations, methods, and comprehensions, you can manage complex data efficiently. Key takeaways:

  • Create dictionaries with {} and access values using keys.
  • Use methods like get(), keys(), and items() for manipulation.
  • Employ dictionary comprehensions for concise transformations.
  • Avoid errors like KeyError with get() or validation.

With these skills, you’re equipped to handle structured data in your Python programs with ease!

Comments