对于我的脚本,我需要检查某个对象是一个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')
我尝试使用模式验证,但似乎不知道如何做到这一点。 任何帮助,使这个更可读/优雅将不胜感激!!你知道吗
先谢谢你
米
问题是,
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
相关问题 更多 >
编程相关推荐