python字典设置初始值setdefault,与get

L = ['you','me','you','me','you','me','you']
D = {}
for i in L:
    D[i] += 1
print(D)

执行以下代码会发生错误

Traceback (most recent call last):
  File  line 4, in <module>
    D[i] += 1
KeyError: 'you'

Process finished with exit code 1

为什么呢?因为我们在定义字典的时候没设置默认值,电脑找不到相应对象,自然就报错了。

很简洁的解决方法:

  • 用setdefault()函数设置初始值
    L = ['you','me','you','me','you','me','you']
    D = {}
    for i in L:
    D[i] = D.setdefault(i,0) + 1
    print(D)
    
  • 用get()将找不到的元素由默认的返回None变为返回为0
    L = ['you','me','you','me','you','me','you']
    D = {}
    for i in L:
       D[i] = D.get(i,0) + 1
    print(D)
    

是不是比用if判断语句方便不少,其实优秀的程序员和一般的程序员在这种细节与简洁处便足以见分晓~下面给出不善于运用python的人儿的写法

# 麻烦的方法
L = ['you','me','you','me','you','me','you']
D = {}
for i in L:
    if i in D:
        D[i] += 1
    else:
        D[i] = 0
print(D)