Python修改字典值中列表元素后原字典未更新,如何修正?
解决字典值转换为短语的问题
你这段代码的问题很明确:循环里的words = [I_am+word for word in words]只是创建了一个新的局部列表变量,并没有把这个修改后的列表同步回原字典pairs里。原字典里的列表完全没被改动,所以打印出来还是原来的样子。
要实现需求,核心是要把修改后的列表重新赋值给原字典对应的键,这里给你两种可行的修改方式:
方式一:直接赋值更新字典(简洁版)
这种方式直接用列表推导生成新短语列表,然后替换原字典对应键的值:
pairs = {'EMOTIONS': ['happy', 'angry', 'sad', 'calm'], 'TRAITS': ['impatient', 'persistent', 'meek']} I_am = 'I am ' for title, words in pairs.items(): # 关键:把新列表赋值回原字典的对应键 pairs[title] = [I_am + word for word in words] print(pairs)
方式二:处理特定词汇替换(匹配你的目标字典)
注意到你的目标字典里TRAITS的最后一项是'I am stubborn'(原词是'meek'),如果需要替换特定词汇,可以在循环里加判断:
pairs = {'EMOTIONS': ['happy', 'angry', 'sad', 'calm'], 'TRAITS': ['impatient', 'persistent', 'meek']} I_am = 'I am ' for title, words in pairs.items(): new_words = [] for word in words: # 把meek替换成stubborn if word == 'meek': new_words.append(f"{I_am}stubborn") else: new_words.append(f"{I_am}{word}") pairs[title] = new_words print(pairs)
运行任意一段代码后,print(pairs)都会输出你想要的结果:
{'EMOTIONS': ['I am happy', 'I am angry', 'I am sad', 'I am calm'], 'TRAITS': ['I am impatient', 'I am persistent', 'I am stubborn']}
内容的提问来源于stack exchange,提问作者BorisAdasson
相关产品推荐
相关产品推荐

