Creating a dictionary from a csv file?
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.
Introduction
Turning CSV rows into a dictionary is a common data-processing step when you need fast lookups by ID, SKU, email, or another key column. The main design question is not only how to read the CSV, but what the dictionary values should be and how duplicate keys should be handled.
Python's built-in csv module is enough for many cases. If the data pipeline already uses pandas, that can also be a convenient path. The important part is to choose a key strategy deliberately instead of letting duplicates overwrite data by accident.
Use csv.DictReader for Named Columns
DictReader turns each row into a dictionary keyed by the CSV headers:
This is the simplest one-to-one mapping pattern: one column becomes the key and another becomes the value.
Keep Entire Rows as Values When Needed
Sometimes you want lookup by key, but you still need the whole row:
This is useful when the dictionary acts like an in-memory index rather than a simple value map.
Decide What to Do About Duplicate Keys
Duplicate keys are where many quick scripts become data-loss bugs. If the same key appears twice, you need an explicit rule.
Overwrite with the last row:
Collect all values for the same key:
Neither policy is universally correct. What matters is choosing one intentionally.
Convert Types While Loading
CSV fields are strings by default, so numeric and boolean conversion should happen explicitly:
Doing this at load time makes data problems visible earlier and keeps downstream code cleaner.
Use Composite Keys When One Column Is Not Enough
Some datasets need more than one column to identify a record uniquely:
Tuple keys are often a clean way to express compound identity without adding another processing pass.
Validate the CSV Schema Early
If the expected columns are missing, fail fast:
This is much better than producing a partially correct dictionary and discovering the schema problem later.
Common Pitfalls
The biggest mistake is assuming the key column is unique when the CSV actually contains duplicates. That can silently overwrite data.
Another common issue is forgetting that CSV values are strings. If you need numbers, dates, or booleans, convert them explicitly.
People also use the CSV module with the wrong delimiter or encoding and then debug the dictionary logic when the parsing layer was actually the problem.
Finally, loading a huge CSV entirely into a dictionary may be the wrong architecture if you only need streaming processing or partial lookups.
Summary
- '
csv.DictReaderis the simplest built-in path for CSV-to-dictionary conversion.' - Decide early whether the dictionary should store one value or entire rows.
- Choose and document a duplicate-key policy.
- Convert field types while loading instead of leaving everything as strings.
- Validate required headers so bad input fails clearly.
Related reading
- Creating a filtered list using helm template helpers
- Creating a List of Lists in C
- Creating a new dictionary in Python
- Creating a queue per remote method when using RabbitMQ?
- Creating a JSON response using Django and Python
- Creating a Pandas DataFrame from a Numpy array How do I specify the index column and column headers?
- Creating a random tree?
- creating a spiral array in python?

DSA Fundamentals
Master algorithmic patterns and data structures through hands-on LeetCode-style problems - from arrays and hashing to dynamic programming and advanced graphs.
View the courseTrack what you have practised
A free account saves your progress, solutions and study plan across every problem on Codemia.
Data Structures & Algorithms practice on Codemia
Step through 300 algorithm problems with animated visualisers that show the data structure changing as the code runs.