Bootstrap

python字典setdefault方法后接append()的理解

1.举例

在编程中,我们有时会见到python字典在setdefault方法后面接.append(),我们来看一个例子:
stedefault.append

2.运行结果

那应该怎么理解这个程序的第5行代码呢?可以从程序的运行结果入手:
在这里插入图片描述

3.setdefault方法的官方描述

我们看到产生的列表是由一个个键值对,键是名字的首字母,值是名字的全拼,这种方法的好处在于可以减少程序运行的时间。但我们先不去赘述方法,在此仅讨论append的位置为什么会在setdefault后面。
我们先看setdefault的官方文档的描述:

setdefault(key[, default])
If key is in the dictionary, return its value. If not, insert key with a value of default and return default. default defaults to None.

也就是说:

如果key这个键在列表中存在,返回值是其键值。
如果key这个键在列表中不存在,返回值是[,default]的值。

4.分析

因此,函数第4、5行代码:

for girl in girls:
    lettergirls.setdefault(girl[0],[]).append(girl)

girl是变量,girls是列表,lettergirls是字典
我们从左往右分析:

lettergirls.setdefault(girl[0],[])这部分的含义是,在lettergirls这个字典中,寻找girl[0]元素(也就是girl变量的首字母),如果没找到,就返回它的默认值[]这个空列表。

那么,lettergirls.setdefault(girl[0],[])这部分我们可以看作[]。而第五行代码也就可以按照[].append(girl)理解。那么setdefault方法后接append()的原因也就迎刃而解了。

5.总结

总结一下:

lettergirls.setdefault(girl[0],[]).append(girl)

这行代码的作用就是,在lettergirls这个空字典中不断添加一个个键值对。键值对的组成是由girl变量的首字母充当键,girl变量整体置于列表中充当键值。(可对比上面命令提示符的图片进行理解)

;