for循环遍历列表KeyError:664

时间:2019-07-12 22:45:26

标签: python-3.x for-loop jupyter-notebook

我正尝试用

来迭代此列表

CTCCTC TCCTCT CCTCTC CTCTCC TCTCCC CTCCCA TCCCAA CCCAAA CCAAAC CAAACT  
CTGGGC TGGGCC GGGCCA GGCCAA GCCAAT CCAATG CAATGC AATGCC ATGCCT TGCCTG GCCTGC  
TGCCAG GCCAGG CCAGGA CAGGAG AGGAGG GGAGGG GAGGGG AGGGGC GGGGCT GGGCTG GGCTGG GCTGGT CTGGTC 
TGGTCT GGTCTG GTCTGG TCTGGA CTGGAC TGGACA GGACAC GACACT ACACTA CACTAT  
ATTCAG TTCAGC TCAGCC CAGCCA AGCCAG GCCAGT CCAGTC CAGTCA AGTCAA GTCAAC TCAACA CAACAC AACACA 
ACACAA CACAAG ACAAGG AGGTGG GGTGGC GTGGCC TGGCCT GGCCTG GCCTGC CCTGCA CTGCAC 
TGCACT GCACTC CACTCG ACTCGA CTCGAG TCGAGG CGAGGT GAGGTT AGGTTC GGTTCC  
TATATA ATATAC TATACC ATACCT TACCTG ACCTGG CCTGGT CTGGTA TGGTAA GGTAAT GTAATG TAATGG AATGGA 

我正在尝试循环读取列表中的每个项目并通过mk_model.vector进行解析

使用的代码如下

for x in all_seq_sentences[:]:
    mk_model.vector(x)
    print(x)

通常,mk_model.vector("AGT")将给出一个与定义dna2vec模型相对应的数组,但是在这里,不是实际执行模型运行,而是将错误抛出为

---------------------------------------------------------------------------
KeyError                                  Traceback (most recent call last)
<ipython-input-144-77c47b13e98a> in <module>
      1 for x in all_seq_sentences[:]:
----> 2     mk_model.vector(x)
      3     print(x)
      4 

~/Desktop/DNA2vec/dna2vec/dna2vec/multi_k_model.py in vector(self, vocab)
     35 
     36     def vector(self, vocab):
---> 37         return self.data[len(vocab)].model[vocab]
     38 
     39     def unitvec(self, vec):

KeyError: 664

在这里期待一些帮助

1 个答案:

答案 0 :(得分:0)

上述问题之所以存在问题,是因为for循环将第一行中的所有项目都作为一个项目,这就是.split()是最佳解决方案的原因。要阅读,请遵循https://python-reference.readthedocs.io/en/latest/docs/str/split.html

工作代码:

for i in all_seq_sentences:
    word = i.split()
    print(word[0])

,然后实现另一个循环以访问model.vector函数

vec_of_all_seq = []
for sentence in all_seq_sentences:
    sentence = sentence.split()
    for word in sentence:
        vec_of_all_seq.append(mk_model.vector(word))
从model.vector派生的

vector表示形式将保存在名为vec_of_all_seq的numpy数组中。