如何遍历字典值中的列表元素并断言所有元素均为整数
实现方案
你当前使用的嵌套all()+生成器表达式的思路本身已经适配大数据量场景:all()自带短路特性,只要遇到第一个不符合要求的元素就会立刻终止校验,不会遍历全量数据;且生成器不会产生中间列表,内存开销极低。
你现有代码的问题是没有匹配字典的两层嵌套列表结构,原代码只校验了第一层子列表的类型,和实际需求不符,修正后的写法如下:
assert all( isinstance(l1_list, list) and all( isinstance(l2_list, list) and all(isinstance(num, int) for num in l2_list) for l2_list in l1_list ) for l1_list in bed_data.values() ), "字典值不是由整数构成的嵌套列表"
如果你的数据规模达到百万级以上元素,也可以引入numpy做向量化类型校验,速度会比纯Python实现快数倍,但常规场景下上述原生写法已经足够高效,无需额外依赖。
内容的提问来源于stack exchange,提问作者Manolo Dominguez Becerra
相关产品推荐
相关产品推荐

