python中模式验证的问题

2024-10-02 00:40:01 发布

您现在位置:Python中文网/ 问答频道 /正文

对于我的脚本,我需要检查某个对象是一个dictionnaries列表还是一个dictionnaries列表,以便执行相应的操作,否则会引发错误。你知道吗

更具体地说,应接受以下条件(有两个不同的条件):

mylist = [{'a': 1, 'b': 2}, {'c': 3},{'d': 4}]
mylist1 = [[{'a':1}, {'ccc':4}], [{'e': 3}]]

但是,例如,以下情况会引发错误:

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')

我尝试使用模式验证,但似乎不知道如何做到这一点。 任何帮助,使这个更可读/优雅将不胜感激!!你知道吗

先谢谢你


Tags: 对象in脚本列表fortype错误条件
1条回答
网友
1楼 · 发布于 2024-10-02 00:40:01

问题是,type(dict)的计算结果是type,因为dict已经是类型指定。你知道吗

所以,您需要将if set([type(x) for x in mylist]) == set([type(dict)])更改为if set([type(x) for x in mylist]) == set([dict])

另外,抛出一般的Exception也不是一个好主意,例如,可以对这种类型的异常使用TypeError

相关问题 更多 >

    热门问题