zoukankan      html  css  js  c++  java
  • 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)
  • 相关阅读:
    1062 Talent and Virtue (25 分)
    1083 List Grades (25 分)
    1149 Dangerous Goods Packaging (25 分)
    1121 Damn Single (25 分)
    1120 Friend Numbers (20 分)
    1084 Broken Keyboard (20 分)
    1092 To Buy or Not to Buy (20 分)
    数组与链表
    二叉树
    时间复杂度与空间复杂度
  • 原文地址:https://www.cnblogs.com/PiaYie/p/14258723.html
Copyright © 2011-2022 走看看