Python如何重命名列表中重复出现两次的嵌套字典字段值
Python处理列表嵌套字典重复字段重命名实现
你要访问的name和language字段存储在每个音频条目的hls子字典中,直接通过audio['hls']['name']、audio['hls']['language']即可完成取值和赋值,不需要额外的复杂解析。
实现逻辑直接用计数字典实时统计重复项即可,遍历一次列表就能完成处理,代码放在你生成job['audio']的逻辑之后运行即可:
from collections import defaultdict # 记录每个(语言名, 语言代码)组合的出现次数 lang_counter = defaultdict(int) for audio_item in job['audio']: hls_config = audio_item['hls'] current_lang = (hls_config['name'], hls_config['language']) lang_counter[current_lang] += 1 # 非首次出现的重复项追加次数后缀 if lang_counter[current_lang] > 1: suffix = str(lang_counter[current_lang]) hls_config['name'] += suffix hls_config['language'] += suffix
逻辑说明
- 不需要额外维护set结构,计数字典在遍历过程中自动累计每个语言组合的出现次数:首次遇到某组合时计数为1,不做修改;第二次遇到同组合时计数为2,自动追加后缀
2,如果存在更多重复项会自动追加对应数字(比如第三个重复的英文会自动命名为English3/en3),扩展性更好。 - 因为字典是可变对象,直接修改
hls_config的字段值就会同步修改原列表job['audio']里的对应内容,不需要额外做列表重建。
针对你给出的示例数据,处理后第三个音频条目的对应字段会被修改为'name': 'English2'、'language': 'en2',完全匹配预期结果。
内容的提问来源于stack exchange,提问作者user16837137
相关产品推荐
相关产品推荐

