Untitled

 avatar
unknown
python
a year ago
1.0 kB
12
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