zoukankan      html  css  js  c++  java
  • python基础(十一、高级变量类型-字典、集合)

    13.高级变量类型
    5)字典
    (1)字典的定义:dictionary(字典)是除列表以外Python之中最灵活的数据类型。字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。
    ①字典和列表的区别:
    (a)列表是有序的对象集合
    (b)字典是无序的对象集合
    ②字典的语法结构:
    (a)字典用 {} 定义
    (b)字典使用键值对存储数据,键值对之间使用“,”分隔
    键key是索引,值value是数据,键和值之间使用“:”分隔。
    键必须是唯一的,必须可哈希 -> 不可变类型(字符串、数字或元组);值可以取任何数据类型

    (2)字典常用操作
    在ipython3中定义一个字典,例如:xiaoming = {}。输入xiaoming.按下TAB键,ipython会提示字典能够使用的函数如下:

    ①取值:dict[key]、dict.get(key,默认值)
    (a)dict[老key],key不存在会报错。

    (b)使用get方法取值:dict.get(key,默认值)
    key不存在返回None,不会报错

    使用get方法取值:键值不存在返回,可以返回默认值

    ②增加/修改dict[key]、dict.setdefault(key:value)、
    (a)增加:dict[新key]=新value,key不存在会报错。
    (b)修改:dict[老key]=新value

    (c)使用setdefault方法新增,当字典中有该键时,不修改原值。当字典中没有该键时,才能新增

    不论是否新增,执行完setdefault方法后,会使用key把value查询出来

    setdefault应用:将列表中大于等于66的数字放入字典的key1对应的列表中,将小于66的数据存入key2对应的列表中。
    列表:lst = [11, 22, 33, 44, 55, 66, 77, 88]
    效果:dic = {"key1": [66, 77, 88], "key2": [11, 22, 33, 44, 55]}
    方法1:

    方法2:

    ③删除dict.pop(key)、 dict.popitem()、del、 dict.clear()
    (a)dict.pop(key)删除指定键值对

    (b)dict.popitem()删除最后一个键值对

    (c)del dict[key]

    (d)清空字典dict.clear()

    ④统计键值对数量len(dict)

    ⑤合并字典dict.update(dict_new)

    (3)迭代遍历 for
    遍历就是依次从字典中获取所有键值对
    ①for 循环内部使用的key的变量 in 字典

    提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的迭代遍历需求并不是很多

    ②直接取值:for value in dict.values() (很少用)

    ③直接取key:for key in dict.keys() (很少用)

    ④直接取键和值:for key, value in dict.items()

    注意:字典迭代遍历时,不能删除列表内容,否则会报错

    ⑤应用场景
    在开发中,大多的应用场景是:
    (a)使用多个键值对,存储描述一个物体的相关信息—描述更复杂的数据信息。
    (b)再将多个字典放在一个列表中,再进行遍历,在循环体内部针对每一个字典进行相同的处理

    (4)词典的嵌套
    ①字典汪峰

    ②购物车列表

    6)set集合
    集合类似字典的存储,但只存放key
    集合的存储数据特点:可哈希、不可变、不重复、无序
    {}可以表示集合
    使用set()创建空集合,使用{}创建的是空字典
    作用:可以帮助我们去除重复
    (1)添加set.add()

    练习:列表去重
    方法一:

    方法二:

    方法三:

    方法四(需要保留顺序):

    (2)删除set.remove
    ①set.remove(key):key不存在时会报错

    ②set.discard(key) :key不存在时不会报错

    ③set.pop():随机删除数据,很少使用。

    (3)取值:迭代遍历for

  • 相关阅读:
    Redis源码剖析(十一)AOF持久化
    Redis源码剖析(一)内存管理zmalloc
    Redis源码剖析(七)压缩列表
    PHP基础课程学习总结
    php标记,变量,常量
    内容控件
    WPF 面板
    OpenSSL SSL_read: Connection was reset, errno 10054
    Java Web 项目学习(三) 发布帖子 AJAX
    控件类(ControlAndFont)
  • 原文地址:https://www.cnblogs.com/bdzxh/p/14061280.html
Copyright © 2011-2022 走看看