Eingabe Geben Sie Python ein, wenn das Wörterbuch einen anderen Datentyp hat
Ich habe kürzlich die Angewohnheit übernommen, Typprüfungen durchzuführen. Sie können meinen vorherigen Beitrag hier sehen . Ich stieß jedoch bald auf ein Problem. Mein targetArgument ist ein dictmit 7 Schlüssel-Wert-Paaren, aber nicht alle haben den gleichen Datentyp. Liegt diese Syntax unter dem richtigen Weg? Es scheint sehr umständlich, dies zu tun.
def augmentate(self, image: np.ndarray, target: [Dict[str, np.ndarray],
Dict[str, torch.Tensor],
Dict[str, torch.Tensor],
Dict[str, torch.Tensor],
Dict[str, torch.Tensor],
Dict[str, torch.Tensor],
Dict[str, torch.Tensor]]):
Antworten
Es hängt wirklich von Ihrer Absicht ab.
target: Union[Dict[str, np.ndarray],Dict[str, torch.Tensor]]
ist entweder ein Wörterbuch von einer Zeichenfolge zu einem ndarray oder ein Diktat von einer Zeichenfolge zu einem Tensor.
target: Dict[str, Union[np.ndarray, torch.Tensor]]
ist ein Wörterbuch von einer Zeichenfolge zu einem ndarray oder einem Tensor.
Ersteres kann also eine von mehreren Arten homogener Wörterbücher sein, während letzteres ein heterogenes Wörterbuch ist.
Ihre Typprüfung sollte alle Typen beschreiben, für die Ihre Methode ausgelegt ist. In Ihrem Fall scheinen dies zwei zu sein, die der Unionstyp beschreibt:
def augmentate(self, image: np.ndarray, target: Dict[str, Union[np.ndarray, torch.Tensor]]):