---
title: "Collections: Lists, Tuples, Sets, and Dictionaries"
date: 2026-01-03T18:07:49Z
modified: 2026-01-04T20:38:40Z
permalink: "https://www.micheledpierri.com/python/collections/"
type: page
status: publish
excerpt: ""
wpid: 2499
featured_image: "https://www.micheledpierri.com/wp-content/uploads/2026/01/Python_07.webp"
featured_image_alt: Children dressed in lab coats are studying a python
timestamp: 2026-01-04T20:38:40Z
tags: []
---

## Lesson Objectives

By the end of this lesson, you will be able to:

- Understand what Python collections are and why they matter
- Use lists, tuples, sets, and dictionaries appropriately
- Choose the right data structure for a given problem
- Recognize how these structures map to real-world data

This lesson is fundamental:

**most data analysis and machine learning workflows are built on these four structures**.

---

## 1️⃣ What Is a Collection

A collection is a container that stores **multiple values** under a single name.

Instead of writing:

age1 =54
age2 =67
age3 =61

```
<span class="line"><span style="color: #F8F8F2">age1 </span><span style="color: #FF79C6">=</span><span style="color: #BD93F9">54</span></span>
<span class="line"><span style="color: #F8F8F2">age2 </span><span style="color: #FF79C6">=</span><span style="color: #BD93F9">67</span></span>
<span class="line"><span style="color: #F8F8F2">age3 </span><span style="color: #FF79C6">=</span><span style="color: #BD93F9">61</span></span>
<span class="line"></span>
<span class="line"></span>
```

you can write:

ages = [54,67,61]

```
<span class="line"><span style="color: #F8F8F2">ages </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> [</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">67</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">61</span><span style="color: #F8F8F2">]</span></span>
<span class="line"></span>
<span class="line"></span>
```

Collections allow you to:

- group related data
- iterate over values
- apply transformations systematically

---

## 2️⃣ Lists (`list`)

Lists are **ordered, mutable collections**.

ages = [54,67,61]

```
<span class="line"><span style="color: #F8F8F2">ages </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> [</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">67</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">61</span><span style="color: #F8F8F2">]</span></span>
<span class="line"></span>
<span class="line"></span>
```

Key properties:

- ordered (positions matter)
- mutable (can be changed)
- allow duplicates

### Common List Operations

ages.append(45) # add element
ages[0] # access by index
len(ages) # number of elements

```
<span class="line"><span style="color: #F8F8F2">ages.append(</span><span style="color: #BD93F9">45</span><span style="color: #F8F8F2">) </span><span style="color: #6272A4"># add element</span></span>
<span class="line"><span style="color: #F8F8F2">ages[</span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">] </span><span style="color: #6272A4"># access by index</span></span>
<span class="line"><span style="color: #8BE9FD">len</span><span style="color: #F8F8F2">(ages) </span><span style="color: #6272A4"># number of elements</span></span>
<span class="line"></span>
<span class="line"></span>
```

Indexes start from `0`.

### Lists in Data Analysis

Lists are used to:

- store observations
- accumulate results
- iterate over datasets

They are often the first step before more advanced structures (e.g. DataFrames).

---

## 3️⃣ Tuples (`tuple`)

Tuples are **ordered but immutable collections**.

patient = ("P001",54,"M")

```
<span class="line"><span style="color: #F8F8F2">patient </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> (</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">P001</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">M</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

Key properties:

- ordered
- immutable (cannot be modified)
- allow duplicates

### Why Use Tuples

Tuples are useful when:

- data should not change
- structure is fixed
- values belong together

Example:

(x, y) = (3,5)

```
<span class="line"><span style="color: #F8F8F2">(x, y) </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> (</span><span style="color: #BD93F9">3</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">5</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

This is common in mathematical and statistical code.

---

## 4️⃣ Sets (`set`)

Sets are **unordered collections of unique elements**.

risk_factors = {"smoker","hypertension","diabetes"}

```
<span class="line"><span style="color: #F8F8F2">risk_factors </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> {</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">smoker</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">hypertension</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">diabetes</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">}</span></span>
<span class="line"></span>
<span class="line"></span>
```

Key properties:

- unordered
- no duplicates
- fast membership testing

### Set Operations

"a"in risk_factors

```
<span class="line"><span style="color: #E9F284">"</span><span style="color: #F1FA8C">a</span><span style="color: #E9F284">"</span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> risk_factors</span></span>
<span class="line"></span>
<span class="line"></span>
```

set1 | set2 # union
set1 & set2 # intersection

```
<span class="line"><span style="color: #F8F8F2">set1 </span><span style="color: #FF79C6">|</span><span style="color: #F8F8F2"> set2 </span><span style="color: #6272A4"># union</span></span>
<span class="line"><span style="color: #F8F8F2">set1 </span><span style="color: #FF79C6">&</span><span style="color: #F8F8F2"> set2 </span><span style="color: #6272A4"># intersection</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Sets in Data Analysis

Sets are ideal for:

- removing duplicates
- comparing groups
- checking membership

They are conceptually very close to mathematical sets.

---

## 5️⃣ Dictionaries (`dict`)

Dictionaries store **key–value pairs**.

patient = {
"id":"P001",
"age":54,
"sex":"M"
}

```
<span class="line"><span style="color: #F8F8F2">patient </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> {</span></span>
<span class="line"><span style="color: #E9F284">"</span><span style="color: #F1FA8C">id</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">P001</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span></span>
<span class="line"><span style="color: #E9F284">"</span><span style="color: #F1FA8C">age</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span></span>
<span class="line"><span style="color: #E9F284">"</span><span style="color: #F1FA8C">sex</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">M</span><span style="color: #E9F284">"</span></span>
<span class="line"><span style="color: #F8F8F2">}</span></span>
<span class="line"></span>
<span class="line"></span>
```

Keys are unique; values can be anything.

### Accessing Dictionary Values

patient["age"]
patient.get("age")

```
<span class="line"><span style="color: #F8F8F2">patient[</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">age</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">]</span></span>
<span class="line"><span style="color: #F8F8F2">patient.get(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">age</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

Difference:

- `[]` raises an error if missing
- `.get()` returns `None`

### Dictionaries in Data Analysis

Dictionaries are ubiquitous because they map naturally to:

- records
- rows
- JSON objects
- structured observations

Most real-world data starts its life as dictionaries.

---

## 6️⃣ Choosing the Right Collection

A practical rule of thumb:

- **list** → ordered sequence of values
- **tuple** → fixed group of values
- **set** → unique values, membership logic
- **dict** → structured records with named fields

Choosing the right structure simplifies code dramatically.

---

## 7️⃣ Iterating Over Collections

Collections become powerful when combined with loops.

for age in ages:
	print(age)

```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> age </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> ages:</span></span>
<span class="line"><span style="color: #F8F8F2">	</span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(age)</span></span>
<span class="line"></span>
<span class="line"></span>
```

for key, value in patient.items():
	print(key, value)

```
<span class="line"><span style="color: #FF79C6">for</span><span style="color: #F8F8F2"> key, value </span><span style="color: #FF79C6">in</span><span style="color: #F8F8F2"> patient.items():</span></span>
<span class="line"><span style="color: #F8F8F2">	</span><span style="color: #8BE9FD">print</span><span style="color: #F8F8F2">(key, value)</span></span>
<span class="line"></span>
<span class="line"></span>
```

Iteration is the backbone of data processing.

---

## 8️⃣ Collections and Real Data

In practice:

- a dataset → list of dictionaries
- a row → dictionary
- a column → list
- categories → set

This mental model will reappear later with pandas and machine learning pipelines.

---

## FAQ — Frequently Asked Questions

**Q: Why not use only lists?**

A: Different problems require different guarantees (order, mutability, uniqueness).

**Q: Are dictionaries ordered?**

A: Yes (since Python 3.7), but conceptually they are still key–value mappings.

**Q: Can dictionary values be collections?**

A: Yes. Nested structures are extremely common.

**Q: Should I memorize all methods?**

A: No. Understand concepts first; methods come naturally.

---

## Exercises

### Exercise 1

Create a list of ages.

### Exercise 2

Add a new age to the list.

### Exercise 3

Access the first element of the list.

### Exercise 4

Create a tuple representing a patient (id, age, sex).

### Exercise 5

Explain why tuples cannot be modified.

### Exercise 6

Create a set of risk factors with duplicates.

### Exercise 7

Show that duplicates are removed.

### Exercise 8

Create a dictionary representing a patient.

### Exercise 9

Access a value safely using `.get()`.

### Exercise 10

Explain which collection you would use to represent a dataset of patients.

---

## Solutions

### Exercise 1

ages = [54,67,61]

```
<span class="line"><span style="color: #F8F8F2">ages </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> [</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">67</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">61</span><span style="color: #F8F8F2">]</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 2

ages.append(45)

```
<span class="line"><span style="color: #F8F8F2">ages.append(</span><span style="color: #BD93F9">45</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 3

ages[0]

```
<span class="line"><span style="color: #F8F8F2">ages[</span><span style="color: #BD93F9">0</span><span style="color: #F8F8F2">]</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 4

patient = ("P001",54,"M")

```
<span class="line"><span style="color: #F8F8F2">patient </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> (</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">P001</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">M</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 5

# Tuples are immutable to protect fixed structure

```
<span class="line"><span style="color: #6272A4"># Tuples are immutable to protect fixed structure</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 6

risk_factors = {"smoker","smoker","diabetes"}

```
<span class="line"><span style="color: #F8F8F2">risk_factors </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> {</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">smoker</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">smoker</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">diabetes</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">}</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 7

# Only unique elements remain

```
<span class="line"><span style="color: #6272A4"># Only unique elements remain</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 8

patient = {"id":"P001","age":54,"sex":"M"}

```
<span class="line"><span style="color: #F8F8F2">patient </span><span style="color: #FF79C6">=</span><span style="color: #F8F8F2"> {</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">id</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">P001</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">age</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #BD93F9">54</span><span style="color: #F8F8F2">,</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">sex</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">:</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">M</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">}</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 9

patient.get("age")

```
<span class="line"><span style="color: #F8F8F2">patient.get(</span><span style="color: #E9F284">"</span><span style="color: #F1FA8C">age</span><span style="color: #E9F284">"</span><span style="color: #F8F8F2">)</span></span>
<span class="line"></span>
<span class="line"></span>
```

### Exercise 10

# A dataset is best represented as a list of dictionaries

```
<span class="line"><span style="color: #6272A4"># A dataset is best represented as a list of dictionaries</span></span>
<span class="line"></span>
<span class="line"></span>
```

---

## Next Lesson Preview

In **Lesson 8**, we will move from single files to **structured code**:

- modules
- packages
- reading and writing files

## This is where Python projects start to look like **real software**.