Python中如何实现仅当元素未存在时才执行append追加操作
代码修改实现
原逻辑没有做重复值校验,会导致同一个index被多次追加到group_id列表中,只需要在追加前增加成员判断,确认index不存在于目标列表时再执行追加操作即可,修改后代码如下:
for index, codec in enumerate(codecs): for audio in filter(lambda x: x['hls']['codec_name'] == codec, job['audio']): # 校验index未被追加过才执行插入 if index not in audio['hls']['group_id']: audio['hls']['group_id'].append(index)
可选性能优化
如果group_id存储的元素量级较大,列表的in操作时间复杂度为O(n),频繁校验会带来额外性能开销,可以将group_id初始化为集合(set)类型:集合本身自动去重,成员判断时间复杂度为O(1),不需要额外写判断逻辑,直接调用add方法就不会插入重复值:
# 初始化阶段将group_id定义为集合,替代原有的列表 # 例:audio['hls']['group_id'] = set() for index, codec in enumerate(codecs): for audio in filter(lambda x: x['hls']['codec_name'] == codec, job['audio']): audio['hls']['group_id'].add(index) # 如果后续业务逻辑要求group_id必须是列表类型,全部处理完成后统一转换即可 # 例:audio['hls']['group_id'] = list(audio['hls']['group_id'])
内容的提问来源于stack exchange,提问作者user18726875
相关产品推荐
相关产品推荐

