Key transformation involves modifying dictionary keys systematically to meet specific programming requirements.
graph TD
A[Key Transformation] --> B[Type Conversion]
A --> C[String Manipulation]
A --> D[Prefix/Suffix Addition]
A --> E[Filtering]
Type Conversion Techniques
## Numeric to String Conversion
numeric_dict = {1: 'apple', 2: 'banana', 3: 'cherry'}
string_keys = {str(k): v for k, v in numeric_dict.items()}
print(string_keys)
## Output: {'1': 'apple', '2': 'banana', '3': 'cherry'}
## Complex Type Conversion
mixed_dict = {
'a': 1,
'b': 2,
'c': 3
}
tuple_keys = {tuple(k): v for k, v in mixed_dict.items()}
String Manipulation Methods
Technique |
Description |
Example |
Uppercase |
Convert keys to uppercase |
key.upper() |
Lowercase |
Convert keys to lowercase |
key.lower() |
Capitalization |
First letter capitalization |
key.capitalize() |
Stripping |
Remove whitespace |
key.strip() |
## Prefix and Suffix Transformation
def transform_key(key):
return f"prefix_{key}_suffix"
original_dict = {'data': 100, 'value': 200}
transformed_dict = {transform_key(k): v for k, v in original_dict.items()}
print(transformed_dict)
## Output: {'prefix_data_suffix': 100, 'prefix_value_suffix': 200}
## Conditional Key Transformation
def selective_transform(key):
return key.upper() if len(key) > 3 else key
sample_dict = {'a': 1, 'long': 2, 'test': 3}
selective_dict = {selective_transform(k): v for k, v in sample_dict.items()}
## Filtering and Transforming Keys
data = {
'user_id': 1,
'user_name': 'John',
'admin_flag': True
}
## Filter and transform keys starting with 'user_'
filtered_dict = {
k.replace('user_', ''): v
for k, v in data.items()
if k.startswith('user_')
}
print(filtered_dict)
## Output: {'id': 1, 'name': 'John'}
- Use generator expressions for large dictionaries
- Leverage built-in string methods
- Implement type-specific transformations
LabEx Pro Tip
LabEx recommends practicing these techniques to develop robust key transformation skills in Python.
Error Handling Strategies
## Safe Transformation with Error Handling
def safe_transform(key):
try:
return key.upper()
except AttributeError:
return key
safe_dict = {
'name': 'Alice',
42: 'number',
(1, 2): 'tuple'
}
transformed = {safe_transform(k): v for k, v in safe_dict.items()}