PYTHON
Transforming Data: Creating Dictionaries from Paired Lists/Tuples
Efficiently convert paired lists or lists of tuples into dictionaries using `zip()` and dictionary comprehensions in Python, a common pattern for data transformation in web development.
# Creating a dictionary from two lists (keys and values)
keys = ["name", "age", "city"]
values = ["Alice", 30, "New York"]
person_dict = dict(zip(keys, values))
print(f"Dictionary from lists: {person_dict}")
# Handling lists of tuples (key-value pairs)
items = [("product_id", "P101"), ("product_name", "Laptop"), ("price", 1200)]
product_details = dict(items)
print(f"Dictionary from list of tuples: {product_details}")
# Using dictionary comprehension with zip for more complex transformations
# For example, converting lists of students and their scores into a dict
students = ["Alice", "Bob", "Charlie"]
scores = [85, 92, 78]
student_scores = {student: score for student, score in zip(students, scores)}
print(f"Student scores dict (comprehension with zip): {student_scores}")
# Combining multiple lists into a dictionary of lists
countries = ["USA", "Canada", "Mexico"]
capitals = ["Washington D.C.", "Ottawa", "Mexico City"]
populations = [330, 38, 128] # in millions
country_data = {
country: {"capital": capital, "population_millions": pop}
for country, capital, pop in zip(countries, capitals, populations)
}
print(f"Country data combined: {country_data}")
How it works: Python provides elegant ways to transform data between different structures, particularly when converting lists or tuples into dictionaries. The `zip()` function is crucial here; it aggregates elements from multiple iterables into tuples, pairing them up. When `zip()`'s output (a list of key-value tuples) is passed to the `dict()` constructor, it directly creates a dictionary. Dictionary comprehensions can be combined with `zip()` for more complex transformations, allowing for custom value creation or combining multiple related lists into a nested dictionary structure, as shown in the country data example.