如何在Python中动态嵌套已有字典并按同义词汇分类?
解决方案:交互式同义词分类嵌套字典实现
嘿,我刚好折腾过类似的需求,给你一个接地气的实现方案——不仅能完成你要的嵌套字典分类,还加入了友好的交互逻辑,让用户能自定义分类名称,灵活性拉满:
完整代码实现
from collections import defaultdict # 你的原始词汇字典 Vocab_World = { 'excelent': 'awesome', 'quit': 'exit', 'great': 'good', 'ceken': 'bilir', 'tremendous': 'fabolous', 'gurbet': 'hasret', 'postpone': 'put_offt', 'ozlem': 'hasret' } # 第一步:询问用户是否需要分类 user_choice = input("是否要将同义词汇分类为嵌套字典?(y/n): ").strip().lower() if user_choice == 'y': # 第二步:按释义分组,自动识别同义词组 synonym_groups = defaultdict(list) for word, meaning in Vocab_World.items(): synonym_groups[meaning].append((word, meaning)) # 第三步:让用户为每个同义词组指定分类名称 nested_vocab = {} print("\n接下来请为每个同义词组指定分类名称:") for meaning, word_pairs in synonym_groups.items(): # 展示当前组的词汇,让用户明确分类对象 print(f"\n--- 同义词组(释义:{meaning})---") for word, _ in word_pairs: print(f" - {word}") category = input("请输入该组的分类名称(比如Adverb、Verb、Turkish Nouns等):").strip() # 确保分类名称不为空,默认用释义当名称 if not category: category = meaning nested_vocab[category] = dict(word_pairs) # 输出最终分类结果 print("\n✅ 分类完成!最终嵌套字典:") print(nested_vocab) else: # 用户选择不分类,输出原始字典 print("\n未执行分类操作,原始字典如下:") print(Vocab_World)
代码功能拆解
- 交互逻辑:先询问用户意愿,支持大小写输入(比如Y、N都能识别),体验更友好
- 自动分组:用
collections.defaultdict快速把有相同释义的词汇归为一组,不用手动找同义词 - 自定义分类:展示每组词汇后让用户输入分类名称,还加了空值处理(如果用户没输入,默认用释义当分类名)
- 输出格式:完全符合你要的
{'分类名': {'词汇': '释义', ...}}嵌套结构
示例运行效果
假设用户输入分类名称如下:
- 释义
awesome/good/fabolous的组 →Positive Adjectives - 释义
exit的组 →Verbs - 释义
bilir的组 →Turkish Verbs - 释义
hasret的组 →Turkish Nouns - 释义
put_offt的组 →Verbs
最终输出会是:
{ 'Positive Adjectives': {'excelent': 'awesome', 'great': 'good', 'tremendous': 'fabolous'}, 'Verbs': {'quit': 'exit', 'postpone': 'put_offt'}, 'Turkish Verbs': {'ceken': 'bilir'}, 'Turkish Nouns': {'gurbet': 'hasret', 'ozlem': 'hasret'} }
内容的提问来源于stack exchange,提问作者NANIS
相关产品推荐
相关产品推荐

