选择最有效的数据结构

白色作品

我没有CS的背景,经常遇到以下问题。我有一个包含以下内容的文本文件:

abacial;abadengo;monástico;monacal;clerical;eclesiástico
abacora;avasalla;somete;sojuzga;supedita;rinde;acosa;hostiga
abacorar;acosar;acometer;sujetar
abacá;cabuya;cáñamo;fibra;filamento;pita

同一行中的所有单词都是同义词。我想将此加载到数据结构中,这样可以高效地查找给定单词的同义词。例如给出查询:

'abadengo'

它应该在第一行找到它并返回其余的单词:

['abacial', 'monástico', 'monacal', 'clerical', 'eclesiástico']

我不需要有效的代码,我只是暗示应该如何有效地完成此工作。我想到的唯一想法是创建一个字典,每个单词作为键,并创建一个列表,将同义词作为值,但这似乎在浪费内存方面是明智的。我也想到过某种图形,但以前从未做过,也不知道是否有更好的解决方案。

亚历克斯·马特利(Alex Martelli)

为了避免浪费内存,使用dict记录相同的元组(元组是更多的内存效率比列表),每同义词(包括自身),然后查找使用小功能删除重复。IE:

syndict = {}
with open('the_file', 'r') as f:
    for line in f:
        syns = tuple(line.strip().split(';')(
        for word in syns:
            syndict[word] = syns
def lookup(word):
    syns = syndict.get(word, ())
    return [w for w in syns if w!=word]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Python最有效的数据结构来保存值并检查值是否存在

Python中最有效的图形数据结构是什么?

使数据结构成为线程安全(Java)的最有效方法

最有效的数据结构来表示Java中的线程注释?

用于保存禁止对列表的最有效数据结构

这是用于存储关注者和关注者的最有效的数据结构

哪种c ++ stl数据结构对存储唯一值及其计数最有效?

设计PRIM算法最有效的数据结构是什么?

用于插入和排序的最有效数据结构

C#最有效的数据结构,可插入和删除下半部分

哪种数据结构对键值对有效?

TimeZone.knownTimeZoneIdentifiers的有效数据结构?

如何创建自己的有效数据结构?

寻找最有效的选择查询

比较数据的最有效方法

存储数据的最有效方法

有没有有效实现这种加密算法的数据结构?

是否有允许有效范围查询的 python 数据结构?

Java-具有多个节点的树数据结构-如何有效搜索

具有有效查找丢失功能的一组键的数据结构

处理日期戳数据的最有效结构是什么

从关系数据库中选择数据的最有效方法是什么?

有效地找到最相似集(Python中,数据结构)

列表和布尔值之间的JSON数据结构是否有效?

空间有效的概率数据结构,用于数字检索

将字典转换为平面数据结构(列表或元组)的有效方法

通过ID访问并找到加权随机项的有效数据结构

对数据结构中的特定元素进行排名-是更有效的方法吗?

什么是可以有效实现图像渲染的纯功能数据结构?