Unit 4 • Lesson 10

Choosing the Right Data Structure

Overview

Learn when to use lists, tuples, dictionaries, or sets based on your needs. This final lesson helps you make smart decisions by comparing structures side-by-side and seeing real-world examples of choosing the right tool for each task.

Intermediate 25–30 min

What You Will Learn in This Lesson

By the end of this lesson, you will know:

  • Choosing lists: When to use lists for ordered, changeable collections.
  • Choosing tuples: When to use tuples for fixed, immutable sequences.
  • Choosing dictionaries: When to use dictionaries for key-value lookups.
  • Choosing sets: When to use sets for unique elements and fast membership.

Why This Matters

Different data structures are optimized for different tasks. Using the wrong structure can make your code slower, harder to read, or bug-prone. Understanding when to use each structure helps you write efficient, clear, and maintainable code!

Step 1: Comparison Guide

Here's a quick reference for choosing the right data structure:

Lists

Use when: You need ordered, changeable items.

  • Order matters (first, second, third)
  • Items can be added, removed, or changed
  • Duplicates are allowed
  • You need indexing and slicing

Example: Shopping cart items, test scores, task queues

Tuples

Use when: You need fixed, immutable sequences.

  • Data shouldn't change after creation
  • You need a fixed-size collection
  • Order matters but items won't change
  • Using as dictionary keys

Example: Coordinates (x, y), RGB colors, constant settings

Dictionaries

Use when: You need key-value pairs for fast lookups.

  • Looking up values by name/key
  • Storing associated data (name → age)
  • Counting occurrences
  • Mapping relationships

Example: User profiles, word counts, config settings

Sets

Use when: You need unique elements and fast membership tests.

  • Removing duplicates
  • Fast membership checks (is X in set?)
  • Set operations (union, intersection)
  • Order doesn't matter

Example: Unique tags, valid usernames, seen items

Step 2: Real-World Examples

Let's see how to choose the right structure for common scenarios:

Example 1: Shopping Cart
# Use a LIST - order matters, items can change
cart = ["apples", "bananas", "milk"]
cart.append("bread")  # Add item
cart.remove("bananas")  # Remove item
print(cart)  # Output: ['apples', 'milk', 'bread']
Example 2: Coordinates
# Use a TUPLE - fixed position, shouldn't change
point = (10, 20)
x, y = point  # Unpacking
print(f"X: {x}, Y: {y}")  # Output: X: 10, Y: 20
Example 3: User Database
# Use a DICTIONARY - look up by username
users = {
    "alice": {"age": 25, "email": "alice@example.com"},
    "bob": {"age": 30, "email": "bob@example.com"}
}
print(users["alice"]["email"])  # Output: alice@example.com
Example 4: Unique Tags
# Use a SET - automatically removes duplicates
tags = ["python", "coding", "python", "tutorial", "coding"]
unique_tags = set(tags)
print(unique_tags)  # Output: {'python', 'coding', 'tutorial'}

Step 3: Decision Tree

Follow this decision tree to choose the right structure:

1

Is Order Important?

If yes → Use a list or tuple

If no → Use a dictionary or set

2

Do You Need Key-Value Pairs?

If yes → Use a dictionary

If no → Continue to step 3

3

Can Items Change?

If yes → Use a list

If no → Use a tuple

4

Do You Need Unique Elements?

If yes → Use a set

If no → Use a dictionary (for key-value) or list (for ordered)

Mini Practice #1: Choosing Structures

Try It Yourself

Create a structure for storing student grades (name → grade). Think about which structure is best!

Press Run to see output

What happened? A dictionary is perfect here because you need to look up grades by student name. This is much faster than searching through a list! Dictionaries are optimized for key-based lookups.

Step 4: Performance Considerations

Different structures have different performance characteristics:

Performance Quick Reference

  • Lists: Fast at the end (append), slower in the middle (insert)
  • Tuples: Fast creation and access, but immutable
  • Dictionaries: Very fast lookups by key (O(1) average)
  • Sets: Very fast membership tests (O(1) average)

Remember: For small collections, the performance difference is usually negligible. Focus on choosing the structure that makes your code clearest and easiest to understand. For large collections or performance-critical code, consider the performance characteristics!

Mini Practice #2: Set Operations

Try It Yourself

Remove duplicates from a list using a set:

Press Run to see output

What happened? Converting a list to a set automatically removes duplicates! Then converting back to a list gives you unique values. This is much more efficient than manually checking for duplicates!

End-of-Lesson Exercises

Exercise 1: Choose the Right Structure

You need to store a fixed list of days of the week. Choose the appropriate data structure and create it with the days: Monday, Tuesday, Wednesday, Thursday, Friday, Saturday, Sunday.

Think about whether the data should change or not.

Write your code above and click "Check Answer" to verify it's correct.

Exercise 2: Word Counter

Count how many times each word appears in the list: ["apple", "banana", "apple", "cherry", "banana", "apple"]. Use a dictionary to store word → count pairs.

Use a dictionary to count occurrences. Check if a key exists before incrementing.

Write your code above and click "Check Answer" to verify it's correct.

Key Takeaways

  • Lists are best for ordered, changeable collections where duplicates are allowed.
  • Tuples are best for fixed, immutable sequences that won't change.
  • Dictionaries are best for key-value lookups and associated data.
  • Sets are best for unique elements and fast membership tests.
  • Choose the structure that makes your code clearest - readability usually matters more than micro-optimizations!