วิธีพิมพ์ Check in Python เมื่อ Dictionary มี Data Type ต่างกัน

Nov 11 2020

เมื่อเร็ว ๆ นี้ฉันได้หยิบนิสัยของการตรวจสอบประเภท ท่านสามารถเข้าดูของฉันโพสต์ก่อนหน้านี้ที่นี่ อย่างไรก็ตามฉันพบปัญหาในไม่ช้าtargetอาร์กิวเมนต์ของฉันคือdictคู่คีย์ - ค่าที่มี 7 คู่ แต่ไม่ใช่ทั้งหมดที่มีประเภทข้อมูลประเภทเดียวกัน ไวยากรณ์ด้านล่างนี้เป็นวิธีที่ถูกต้องหรือไม่? ดูเหมือนจะยุ่งยากมากที่จะทำเช่นนั้น

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]]):
    

คำตอบ

1 AmiTavory Nov 11 2020 at 22:09

มันขึ้นอยู่กับเจตนาของคุณจริงๆ

target: Union[Dict[str, np.ndarray],Dict[str, torch.Tensor]]

เป็นทั้งพจนานุกรมจากสตริงเป็น ndarray หรือคำสั่งจากสตริงถึงเทนเซอร์

 target: Dict[str, Union[np.ndarray, torch.Tensor]]

คือพจนานุกรมจากสตริงเป็น ndarray หรือเทนเซอร์

ดังนั้นอดีตอาจเป็นหนึ่งในพจนานุกรมที่เป็นเนื้อเดียวกันได้หลายประเภทในขณะที่พจนานุกรมแบบหลังเป็นพจนานุกรมที่ไม่เหมือนกัน

1 James Nov 11 2020 at 22:05

การตรวจสอบประเภทของคุณควรอธิบายประเภททั้งหมดที่วิธีการของคุณออกแบบมาเพื่อจัดการ ในกรณีของคุณดูเหมือนว่าจะเป็นสองประเภทซึ่งประเภทของสหภาพอธิบาย:

def augmentate(self, image: np.ndarray, target: Dict[str, Union[np.ndarray, torch.Tensor]]):