zoukankan      html  css  js  c++  java
  • Python3 字典Dict(十三)

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    d = {key1 : value1, key2 : value2 }

    键必须是唯一的,但值则不必

    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    一个简单的字典实例:

    1 dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

    也可如此创建字典:

    1 dict1 = { 'abc': 456 };
    2 dict2 = { 'abc': 123, 98.6: 37 };

    访问字典里的值

    把相应的键放入熟悉的方括弧,如下实例:

    1 #!/usr/bin/python3
    2 
    3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    4 
    5 print ("dict['Name']: ", dict['Name'])
    6 print ("dict['Age']: ", dict['Age'])

    以上实例输出结果:

    1 dict['Name']:  Runoob
    2 dict['Age']:  7

    如果用字典里没有的键访问数据,会报错。

     1 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     2 >>> 
     3 >>> "stu1102" in info #标准用法
     4 True
     5 >>> info.get("stu1102")  #获取
     6 'LongZe Luola'
     7 >>> info["stu1102"] #同上,但是看下面
     8 'LongZe Luola'
     9 >>> info["stu1105"]  #如果一个key不存在,就报错,get不会,不存在只返回None
    10 Traceback (most recent call last):
    11   File "<stdin>", line 1, in <module>
    12 KeyError: 'stu1105'

    修改字典

    向字典添加新内容的方法是增加新的键/值对,修改或删除已有键/值对如下实例:

     1 #!/usr/bin/python3
     2 
     3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
     4 
     5 dict['Age'] = 8;               # 更新 Age
     6 dict['School'] = "菜鸟教程"  # 添加信息
     7 
     8 
     9 print ("dict['Age']: ", dict['Age'])
    10 print ("dict['School']: ", dict['School'])

    以上实例输出结果:

    1 dict['Age']:  8
    2 dict['School']:  菜鸟教程

    删除字典元素

    能删单一的元素也能清空字典,清空只需一项操作。

    显示删除一个字典用del命令,如下实例:

     1 #!/usr/bin/python3
     2 
     3 dict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
     4 
     5 del dict['Name'] # 删除键 'Name'
     6 dict.clear()     # 删除字典
     7 del dict         # 删除字典
     8 
     9 print ("dict['Age']: ", dict['Age'])
    10 print ("dict['School']: ", dict['School'])

    但这会引发一个异常,因为用执行 del 操作后字典不再存在:

    1 Traceback (most recent call last):
    2   File "test.py", line 9, in <module>
    3     print ("dict['Age']: ", dict['Age'])
    4 TypeError: 'type' object is not subscriptable
     1 >>> info
     2 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya', 'stu1101': ''}
     3 >>> info.pop("stu1101") #标准删除姿势
     4 ''
     5 >>> info
     6 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
     7 >>> del info['stu1103'] #换个姿势删除
     8 >>> info
     9 {'stu1102': 'LongZe Luola'}
    10 >>> 
    11 >>> 
    12 >>> 
    13 >>> info = {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'}
    14 >>> info
    15 {'stu1102': 'LongZe Luola', 'stu1103': 'XiaoZe Maliya'} #随机删除
    16 >>> info.popitem()
    17 ('stu1102', 'LongZe Luola')
    18 >>> info
    19 {'stu1103': 'XiaoZe Maliya'}

    字典键的特性

    字典值可以是任何的 python 对象,既可以是标准的对象,也可以是用户定义的,但键不行。

    两个重要的点需要记住:

    1)不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住,如下实例:

    1 #!/usr/bin/python3
    2 
    3 dict = {'Name': 'Runoob', 'Age': 7, 'Name': '小菜鸟'}
    4 
    5 print ("dict['Name']: ", dict['Name'])

    以上实例输出结果:

    1 dict['Name']:  小菜鸟

    2)键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行,如下实例:

    1 #!/usr/bin/python3
    2 
    3 dict = {['Name']: 'Runoob', 'Age': 7}
    4 
    5 print ("dict['Name']: ", dict['Name'])

    以上实例输出结果:

    1 Traceback (most recent call last):
    2   File "test.py", line 3, in <module>
    3     dict = {['Name']: 'Runoob', 'Age': 7}
    4 TypeError: unhashable type: 'list'

    循环字典方法:

    #方法1
    for key in info:
        print(key,info[key])
    
    #方法2
    for k,v in info.items(): #会先把dict转成list,数据里大时莫用
        print(k,v)
    1 dic = {"name": "lhm", "age": 33, "address": "wuhan", "job": "coding"}
    2 for i in dic:
    3     print(i, dic[i])
    4 print("-------------------------------")
    5 for a, b in dic.items():
    6     print(a, b)

    结果如下:

    1 job coding
    2 name lhm
    3 address wuhan
    4 age 33
    5 -------------------------------
    6 job coding
    7 name lhm
    8 address wuhan
    9 age 33

    字典内置函数&方法

    Python字典包含了以下内置函数:

    Python字典包含了以下内置方法:

    序号函数及描述
    1 radiansdict.clear()
    删除字典内所有元素
    2 radiansdict.copy()
    返回一个字典的浅复制
    3 radiansdict.fromkeys()
    创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
    4 radiansdict.get(key, default=None)
    返回指定键的值,如果值不在字典中返回default值
    5 key in dict
    如果键在字典dict里返回true,否则返回false
    6 radiansdict.items()
    以列表返回可遍历的(键, 值) 元组数组
    7 radiansdict.keys()
    以列表返回一个字典所有的键
    8 radiansdict.setdefault(key, default=None)
    和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
    9 radiansdict.update(dict2)
    把字典dict2的键/值对更新到dict里
    10 radiansdict.values()
    以列表返回字典中的所有值
    11 pop(key[,default])
    删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
    12 popitem()
    随机返回并删除字典中的一对键和值(一般删除末尾对)。
  • 相关阅读:
    Docker容器启动时初始化Mysql数据库
    使用Buildpacks高效构建Docker镜像
    Mybatis 强大的结果集映射器resultMap
    Java 集合排序策略接口 Comparator
    Spring MVC 函数式编程进阶
    换一种方式编写 Spring MVC 接口
    【asp.net core 系列】6 实战之 一个项目的完整结构
    【asp.net core 系列】5 布局页和静态资源
    【asp.net core 系列】4. 更高更强的路由
    【Java Spring Cloud 实战之路】- 使用Nacos和网关中心的创建
  • 原文地址:https://www.cnblogs.com/jiyimeng/p/python11112.html
Copyright © 2011-2022 走看看