• 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)
  • 相关阅读:
    Mysql优化(1) 存储引擎、数据类型、字符集
    Mysql常用命令(5) 增加表的字段、修改表名、备份数据库
    Mysql常用命令(4) 插入、查询、删除、修改数据
    Navicat Premium v12.1.28 中文最新破解版(附:激活工具)
    MySQL命令:创建数据库、插入数据
    mysql初始化密码错误
    mysql第一次安装成功后初始化密码操作步骤
    MYSQL安装出现问题(服务无法启动,The service already exists)
    练习4-7 求e的近似值 (15 分)
    习题3-2 高速公路超速处罚 (15 分)
  • 原文地址:https://www.cnblogs.com/PiaYie/p/14258723.html
Copyright © 2020-2023  润新知