我没有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']
我不需要有效的代码,我只是暗示应该如何有效地完成此工作。我想到的唯一想法是创建一个字典,每个单词作为键,并创建一个列表,将同义词作为值,但这似乎在浪费内存方面是明智的。我也想到过某种图形,但以前从未做过,也不知道是否有更好的解决方案。
为了避免浪费内存,使用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] 删除。
我来说两句