• 6-5、Python 数据类型-字典


    python 字典创建、新增、修改、删除、遍历

    字典介绍

    Python的字典数据类型是基于hash散列算法实现的,采用键值对(key:value)的形式,根据key的值计算value的地址,具有非常快的查取和插入速度。但它是无序的,包含的元素个数不限,值的类型也可以是其它任何数据类型!

    字典的key必须是不可变的对象,例如整数、字符串、bytes和元组,但使用最多的还是字符串。列表、字典、集合等就不可以作为key。同时,同一个字典内的key必须是唯一的, 但值则不必。

    字典的每个键值对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中,例如:d = {key1 : value1, key2 : value2 }

    字典的创建

    dict()函数是Python内置的创建字典的方法。

    >>> test = {}
    >>> type(test)
    <class 'dict'>
    >>> a = {'a':'200','b':100}
    >>> a
    {'a': '200', 'b': 100}
    >>> dict([('a',1),('b',2)])
    {'a': 1, 'b': 2}
    >>> dict(a=1,b=2,name='jack')
    {'a': 1, 'b': 2, 'name': 'jack'}
    >>> b = {1:100,2:200}   # 常用的 
    >>> type(b)
    <class 'dict'>
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    访问字典

    字典是集合类型,不是序列类型,因此没有索引下标的概念,更没有切片的说法。但是,与list类似,字典采用把相应的键放入方括号内获取对应值的方式取值。

    >>> a = dict(a=1,b=2,name='jack')
    >>> a
    {'a': 1, 'b': 2, 'name': 'jack'}
    >>> a['a']
    1
    >>> a['name']
    'jack'
    >>> b = {1:100,2:200}
    >>> b[1]
    100
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    增加和修改

    增加就是往字典插入新的键值对,修改就是给原有的键赋予新的值。由于一个key只能对应一-个
    值,所以,多次对一个key赋值,后面的值会把前面的值冲掉。

    >>> b = {1:100,2:200}
    >>> b
    {1: 100, 2: 200}
    >>> b[3]=300           # 添加元素 3:300,键为3,值为300
    >>> b
    {1: 100, 2: 200, 3: 300}
    >>> b['1']=500         # 添加元素
    >>> b
    {1: 100, 2: 200, 3: 300, '1': 500}
    >>> b[1]=600  # 修改元素
    >>> b
    {1: 600, 2: 200, 3: 300, '1': 500} 
    >>>  
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13

    删除字典元素、清空字典和删除字典

    使用del关键字删除字典元素或者字典本身,使用字典的clear()方法清空字典

    >>> b ={1: 600, 2: 200, 3: 300, '1': 500}
    >>> b
    {1: 600, 2: 200, 3: 300, '1': 500}
    >>> del b[1]            # 删除字典元素
    >>> b
    {2: 200, 3: 300, '1': 500}
    >>> b.pop(3)
    300
    >>> b
    {2: 200, '1': 500}
    >>> b.clear()   # 清空字典
    >>> b
    {}
    >>> del b   # 删除字典
    >>> b
    Traceback (most recent call last):
      File "<pyshell#35>", line 1, in <module>
        b
    NameError: name 'b' is not defined
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20

    字典的方法

    get(key) 返回指定键的值,如果值不在字典中,则返回default值
    items() 以列表返回可遍历的(键,值)元组对
    keys() 以列表返回字典所有的键
    values() 以列表返回字典所有的值

    >>> a = {'name':'jack','age':20,'addres':'beijin'}
    >>> a
    {'name': 'jack', 'age': 20, 'addres': 'beijin'}
    >>> a.get('name')  # 根据键获取值
    'jack'
    >>> 
    >>> a.items() # 返回键-值元组的列表
    dict_items([('name', 'jack'), ('age', 20), ('addres', 'beijin')])
    >>> 
    >>> a.keys()
    dict_keys(['name', 'age', 'addres'])
    >>> a.values()
    dict_values(['jack', 20, 'beijin'])
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    遍历字典

    遍历字典获得的键值对是随机无序的

    >>> a
    {'name': 'jack', 'age': 20, 'addres': 'beijin'}
    >>> for key in a:
    	print(key)
    	
    name
    age
    addres
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    >>> a
    {'name': 'jack', 'age': 20, 'addres': 'beijin'}
    >>> for i in a.items():
    	print(i)
    	
    ('name', 'jack')
    ('age', 20)
    ('addres', 'beijin')
    
    >>> for i in a.items():
    	print(i[0],i[1])
    
    name jack
    age 20
    addres beijin
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    >>> for key,value in a.items():
    	print(key,value)
    	
    name jack
    age 20
    addres beijin
    >>> 
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
  • 相关阅读:
    Java学习----前端1
    整体记录一下asp.net core 认证和授权
    SNMP放大攻击
    BIGEMAP APP行车(走路)轨迹记录
    JDK8的特性
    Kubernetes 网络排查方法
    stable diffusion打造自己专属的LORA模型
    入职算法工程师后敲的非常有趣使用的小工具
    递归代码和动态规划代码相互转化
    入职前学习SystemVerilog
  • 原文地址:https://blog.csdn.net/u014096024/article/details/125412013