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:

  1. 求两个列表的交集
  2. 遍历交集列表中的每一个元素,min(元素在列表 1 次数, 元素在列表 2 次数) ,就是此元素的重叠次数
  3. 求出最大的重叠次数

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)
原文地址:https://www.cnblogs.com/PiaYie/p/14258723.html