Advanced Dictionary Techniques
Dictionary Comprehensions
Creating Dictionaries Dynamically
## Generate dictionary from list
squares = {x: x**2 for x in range(6)}
print(squares) ## {0: 0, 1: 1, 2: 4, 3: 9, 4: 16, 5: 25}
## Conditional dictionary comprehension
filtered_squares = {x: x**2 for x in range(10) if x % 2 == 0}
Nested Dictionaries
## Complex nested dictionary structure
students = {
"Alice": {
"age": 22,
"grades": {"math": 95, "science": 88}
},
"Bob": {
"age": 23,
"grades": {"math": 85, "science": 92}
}
}
Dictionary Manipulation Techniques
graph TD
A[Dictionary Techniques] --> B[Comprehensions]
A --> C[Nested Dictionaries]
A --> D[Key Transformations]
A --> E[Merging]
Dictionary Unpacking
## Merging dictionaries
default_config = {"theme": "light", "font": "Arial"}
user_config = {"theme": "dark"}
final_config = {**default_config, **user_config}
Advanced Methods
Method |
Description |
Example |
setdefault() |
Set default value if key not exists |
d.setdefault('key', default_value) |
defaultdict() |
Create dict with default factory |
collections.defaultdict(list) |
Default Dictionary
from collections import defaultdict
## Automatic list creation for each key
word_count = defaultdict(list)
word_count['python'].append(1)
word_count['python'].append(2)
Dictionary Sorting
## Sort dictionary by keys
sorted_dict = dict(sorted(original_dict.items()))
## Sort dictionary by values
sorted_by_value = dict(sorted(original_dict.items(), key=lambda x: x[1]))
Memory-Efficient Techniques
## Using dict.fromkeys() for initialization
keys = ['a', 'b', 'c']
initial_dict = dict.fromkeys(keys, 0)
Complex Use Cases
Dictionary as Cache
def memoize(func):
cache = {}
def wrapper(*args):
if args not in cache:
cache[args] = func(*args)
return cache[args]
return wrapper
At LabEx, we encourage developers to explore these advanced techniques to write more efficient and elegant Python code.