字典中的键错误。如何让Python打印我的字典?

时间:2016-11-19 19:31:55

标签: python dictionary python-3.4

在我的作业中,这个问题要求我创建一个函数,Python应该创建一个字典,表示以长字符串中某个字母开头的单词是对称的。对称意味着单词以一个字母开头,以相同的字母结尾。我不需要这个算法的帮助。我当然知道我做对了,但是我只需要解决这个我无法弄清楚的Key错误。我写了d[word[0]] += 1,即将以该特定字母开头的单词的频率加1。

输出应该如下所示(使用我在下面提供的字符串): {'d': 1, 'i': 3, 't': 1}

t = '''The sun did not shine
it was too wet to play
so we sat in the house
all that cold cold wet day

I sat there with Sally
we sat there we two
and I said how I wish
we had something to do'''

def symmetry(text):
    from collections import defaultdict
    d = {}
    wordList = text.split()
    for word in wordList:
        if word[0] == word[-1]:
            d[word[0]] += 1
    print(d)
print(symmetry(t))

2 个答案:

答案 0 :(得分:1)

尽管您导入了collections.defaultdict,但实际上并没有使用d。将defaultdict(int)初始化为{},而不是def symmetry(text): from collections import defaultdict d = defaultdict(int) wordList = text.split() for word in wordList: if word[0] == word[-1]: d[word[0]] += 1 print(d) print(symmetry(t)) ,您就可以了。

defaultdict(<class 'int'>, {'I': 3, 't': 1, 'd': 1})

结果:

 try {
    int a = 1/0;
}
catch(Exception e) {
    System.out.println("Exception block"+e);
}
finally {
    System.out.println("Inside Finally block");
}
} 

答案 1 :(得分:1)

您正在尝试增加尚未创建的条目的值,从而导致KeyError。当没有密钥输入时,您可以使用get();默认值为0或您选择的任何其他值)。使用此方法,您不需要defaultdict虽然在某些情况下非常有用)。

def symmetry(text):
    d = {}
    wordList = text.split()
    for word in wordList:
        key = word[0]
        if key == word[-1]:
            d[key] = d.get(key, 0) + 1
    print(d)
print(symmetry(t))

示例输出

{'I': 3, 'd': 1, 't': 1}