Python中如何修改字典内元素值?运行替换代码无输出变化该如何解决
问题原因
你写的代码中直接修改循环变量el不会生效:Python遍历列表时拿到的el是临时值拷贝,字符串属于不可变类型,对el赋值只会修改这个临时变量的指向,不会改动tags列表里的原存储内容。
修复方案
借助你已经定义好的新旧词映射字典d,推荐两种实现方式:
方式1:遍历索引修改原列表
d = { 'datamining': 'data mining', 'data science': 'data mining', } for elem in output: # 同时拿到索引和对应标签,直接修改原列表对应位置的值 for idx, tag in enumerate(elem['tags']): if tag in d: elem['tags'][idx] = d[tag] print(output)
方式2:列表推导式生成新标签列表(更简洁)
d = { 'datamining': 'data mining', 'data science': 'data mining', } for elem in output: # d.get(tag, tag) 表示标签存在映射就替换,不存在就保留原值 elem['tags'] = [d.get(tag, tag) for tag in elem['tags']] print(output)
两种方式都可以得到你预期的输出结果。
内容的提问来源于stack exchange,提问作者user12217822
相关产品推荐
相关产品推荐

