这段代码在哪里错了

时间:2012-04-03 14:33:15

标签: python dictionary nlp

f=open('new.txt')
var=f.read()
var=var.lower()
var = var.replace(';','')
var = var.replace(',','')
var = var.replace('.','')
x=var.split()
dict={}
dictList=[]
dict2={}
for i in xrange(0,len(x)-1):

    if dict.items():
        for k in dict.items():
            if x[i] not in k:

                dict[x[i]]=dict2
                dict2[x[i+1]]=1

            else:
                if dict[x[i]].keys():
                    if x[i+1] in dict[x[i]].keys():
                        dict[x[i]][x[i+1]]+=1
                    else:
                        dict[x[i]][x[i+1]]=1
                else:
                    dict[x[i]][x[i+1]]=1

    else:

        dict[x[i]]=dict2
        dict2[x[i+1]]=1

print dict

此代码必须打印每个单词的二元组计数。我很确定我不恰当地实例化了dict2。我确定这是一个天真的错误,但我不知何故错过了它。有什么建议? :)

1 个答案:

答案 0 :(得分:2)

如果我必须重构此代码,我会查看:

  • 变量名称。像dict这样的名字告诉编码器/维护者什么都没有。 dictdict2之间有什么区别?你今天可能知道,但明天......也许不是
  • 嵌套/ if / for / if / if 。很难遵循所有路径并确保没有可能的错误。我将它分解为单独的函数,可以独立调试和测试。
  • 数据结构。它们通常是计划的核心。但在这里,他们是什么?这对我来说并不明显,这意味着代码什么/为什么做什么
  • 并不明显
  • 错误处理。可能/期望的错误是什么?将处理/忽略哪些?