python中模式验证的问题
对于我的脚本,我需要检查某个对象是词汇表列表还是词汇表列表,以便执行相应的操作,否则会引发错误 更具体地说,应接受以下条件(有两个不同的条件): 但是,例如,以下内容应引起错误:python中模式验证的问题,python,Python,对于我的脚本,我需要检查某个对象是词汇表列表还是词汇表列表,以便执行相应的操作,否则会引发错误 更具体地说,应接受以下条件(有两个不同的条件): 但是,例如,以下内容应引起错误: c = [[]] d = [[{'a':1}], {'b':2}] 我实施了一个简单的解决方案,如下所示: if set([type(x) for x in mylist]) == set([dict]): print('first case') elif set([type(x) for x in myli
c = [[]]
d = [[{'a':1}], {'b':2}]
我实施了一个简单的解决方案,如下所示:
if set([type(x) for x in mylist]) == set([dict]):
print('first case')
elif set([type(x) for x in mylist]) == set([list]) and set([type(x) for y in mylist for x in y ])== set([dict]):
print('second case')
else:
raise Exception('wrong structure')
我尝试使用模式验证,但似乎不知道如何做到这一点。
如有任何帮助使本文件更具可读性/优雅性,将不胜感激
提前感谢大家,
问题是,
type(dict)
评估为type
因为dict
已经是类型指定
因此,您需要将if set([type(x)表示mylist中的x])==set([type(dict)])
更改为if set([type(x)表示mylist中的x])==set([dict])
此外,抛出常规的
异常
也不是一个好主意,您可以,例如,使用TypeError
处理此类异常查看感谢您的评论。问题是,我需要更一般地说:我不知道关键点,也不知道我的结构中的元素数量。谢谢,我更正了这个问题。在我的脚本中,我编写了type(dict())和type(list()),它们根据需要计算类型。问题在于如何以更通用/优雅/可读的方式写作。。
if set([type(x) for x in mylist]) == set([dict]):
print('first case')
elif set([type(x) for x in mylist]) == set([list]) and set([type(x) for y in mylist for x in y ])== set([dict]):
print('second case')
else:
raise Exception('wrong structure')