Untitled
unknown
python
a year ago
1.0 kB
15
Indexable
from typing import Union, Optional, List, Dict, Tuple, Callable, Any
Number = Union[int, float]
StrOrNone = Optional[str]
JsonDict = Dict[str, Any]
def process_data(data: List[Union[str, int, float]], transform: Optional[Callable[[Number], Number]] = None) -> Tuple[JsonDict, StrOrNone]:
result: JsonDict = {'processed': []}
for item in data:
if isinstance(item, (int, float)):
item = transform(item) if transform else item
result['processed'].append(item)
elif isinstance(item, str):
result['processed'].append(item.upper())
else:
raise ValueError("Unsupported data type")
message: StrOrNone = "Processing complete" if result['processed'] else None
return result, message
if __name__ == "__main__":
sample_data = [1, 2.5, 'hello', 3]
processed, msg = process_data(sample_data, transform=lambda x: x * 2)
print(processed) # {'processed': [2, 5.0, 'HELLO', 6]}
print(msg) # Processing complete
Editor is loading...
Leave a Comment