PyDictionary打印词义不保留输入单词列表顺序的问题如何解决?
问题原因
PyDictionary输出词义顺序与输入单词顺序不一致,是两个底层逻辑导致的:
- 较早版本的PyDictionary使用无序字典结构存储多单词查询结果,Python 3.7 之前的原生字典默认不保留插入顺序,遍历输出时自然和输入顺序不同
- 批量传入单词初始化实例时,PyDictionary会并行发起网络请求查询词义,接口返回的先后顺序会直接影响最终结果的排序
解决方案
不要批量将单词传入PyDictionary构造函数,自行维护原始顺序的单词列表,按顺序逐个查询词义即可完全匹配输入顺序,示例代码如下:
from PyDictionary import PyDictionary # 按需求排序的原始单词列表,提前去除首尾空格避免查询失败 word_list = ["bad", "omen", "azure", "sky", "icy", "smile"] dictionary = PyDictionary() # 按原始顺序遍历查询输出 for word in word_list: meaning = dictionary.meaning(word) print(f"*{word}* 的词义:") if meaning: for pos, definitions in meaning.items(): print(f"{pos}: {', '.join(definitions)}") else: print("未查询到该单词词义") print("-" * 30)
如果单词量较大想要提升查询效率,可以自行实现并发请求逻辑,请求完成后按原始单词列表的顺序对结果做重排后输出即可。
内容的提问来源于stack exchange,提问作者user16330615
相关产品推荐
相关产品推荐

