Day 6:dict 和 set 的 15 个经典使用例子
1. 字典的更新:update方法
update是字典的更新方法,使用字典的时候,可能要批量插入键值对到已有字典中:
2. 不修改原先键值对的插入:setdefault方法
即在插入之前检查是否已经有该key存在,因为key是唯一的,如果没有就插入:
使用字典自带的setdefault方法:
3. 字典并集
实现合并 d1 和 d2,返回一个新字典:
4. 字典差,找不同
5. 按键排序
6. 按值排序
注意:d.items() 返回元素为 (key, value) 的可迭代类型(Iterable)
7. 最大键
最大键的意思是:
获取该键和对应值的方法:
8. 最大字典值
字典中key必须是唯一的,可哈希的,而值就不一定了,
为什么是'as'最大?(一般这些不同类型的也不会在一起比较==)
so这里要考查一下max的用法:
描述:
取传入的多个参数中的最大值,或者传入的可迭代对象元素中的最大值
语法:
1. max(iterable, *[, key, default])
2. max(arg1, arg2, *args[, key])
参数介绍:
默认数值型参数,取值大者;字符型参数,取字母表排序靠后者 ASCII
key---可作为一个函数,用来指定取最大值的方法。
default---用来指定最大值不存在时返回的默认值
arg1---字符型参数/数值型参数,默认数值型
栗子:
9. 集合最值
找出集合中的最大、最小值,并装到元组中返回:
10. 单字符串
若组成字符串的所有字符仅出现一次,则被称为单字符串,要做的就是给一个字符串,判断是不是单字符串:
11. 更长集合
key 函数定义为按照元素长度比较大小,找到更长的集合:
12. 重复最多
在两个列表中,找出重叠次数最多的元素。默认只返回一个。
idea:
- 求两个列表的交集
- 遍历交集列表中的每一个元素,
min(元素在列表 1 次数, 元素在列表 2 次数)
,就是此元素的重叠次数 - 求出最大的重叠次数
13.top-n 的值对应的键
找出字典前 n 个最大值,对应的键。
导入 Python 内置模块 heapq 中的 nlargest 函数,获取字典中的前 n 个最大值。
其中关键字key 函数定义为:按值比较大小。
14. 一键对多值字典
什么叫一键对多值,把相同键的值放进一个list不就完事了:
更优雅的方法!!!!
使用 collections 模块中的 defaultdict,它能创建属于某个类型的自带初始值的字典。使用起来更加方便:
defaultdict除了可以接受工厂函数(工厂函数包含set,list,str,range等,详细看python源代码builtins.py)作为参数外,还可以使用任何不带参数的可调用函数,并以该函数返回值作为默认值。
15. 逻辑上合并字典
因为合并,实际上是创建了一个新的字典,在新的字典中改变值不会影响dic1中的值,
有没有什么方法是逻辑上的改变呢?有!
collections 模块中的 ChainMap 函数却不同,它在内部创建了一个容纳这些字典的列表。使用 ChainMap 合并字典,修改 merged['x']=10
后,dic1 中的 x 值改变。、
16. 根据最大的值返回对应的键
return max(dict, key = dict.get)