• Python字典-dict “ “ ---记一次查缺补漏“ “


    0x0 前言

    python没有系统学过,走一步学一点吧,这次查缺补漏的点是dict;
    文献参考:

    菜鸟教程
    ChatGPT
    https://c.biancheng.net/view/2212.html
    维基百科

    0x1 字典 (Dictionary)

    字典是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据。
    字典中相当于存放了俩组数据,其中一组是关键数据被称为key,另外一组可以用key来访问,被称为value,形象的看 key和value的关系如下图:
    在这里插入图片描述
    source:https://c.biancheng.net/view/2212.html

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

    d = {key1 : value1, key2 : value2 }
    
    • 1

    注意 : dict作为 Python 的关键字和内置函数,变量名不建议命名为 dict
    键一般是唯一的,如果重复最后一个键值对会替换前面的,值不需要唯一。

    >>> tinydict = {'a': 1, 'b': 2, 'b': '3'}
    >>> tinydict['b']
    '3'
    >>> tinydict
    {'a': 1, 'b': '3'}
    
    • 1
    • 2
    • 3
    • 4
    • 5

    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
    一个简单的字典实例:

    tinydict = {'qwer':'1234', 'asdf':'5678', 'zxcv' : '9012'}
    
    • 1

    也可如此创建字典:

    tinydict1 = { 'abc': 456 }
    tinydict2 = { 'abc': 123, 98.6: 37 }
    
    • 1
    • 2

    字典的基本用法:

    • 通过key访问value
    • 通过key添加key-value对
    • 通过key删除key-value对
    • 通过key修改key-value对
    • 通过key判断制定key-value对是否存在
    • 通过key访问value使用的也是方括号语法

    0x01 访问字典里的值

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

    # python2 运行不需要括号
    tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    
    print "tinydict['Name']: ", tinydict['Name']
    print "tinydict['Age']: ", tinydict['Age']
    
    # python3 运行需要括号
    tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    
    print("tinydict['Name']: ", tinydict['Name'])
    print("tinydict['Age']: ", tinydict['Age'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    输出结果:

    tinydict['Name']:  Zara
    tinydict['Age']:  7
    
    • 1
    • 2

    如果用字典里没有的键访问数据,会输出错误如下:
    实例:

    tinydict = {'Name': 'Runoob', 'Age': 7, 'Class': 'First'}
    
    print("tinydict['Alice']: ", tinydict['Alice'])
    
    • 1
    • 2
    • 3

    以上实例输出结果:
    在这里插入图片描述

    0x02 修改字典

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

    # 基于 python3 实例
    
    tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    
    tinydict['Age'] = 8  # 更新
    tinydict['School'] = "RUNOOB"  # 添加
    
    print ("tinydict['Age']: ", tinydict['Age'])
    print ("tinydict['School']: ", tinydict['School'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    以上实例输出结果:

    tinydict['Age']:  8
    tinydict['School']:  RUNOOB
    
    • 1
    • 2

    0x03 删除字典元素

    能删单一的元素也可以清空字典,清空只需要一项操作。
    显示删除一个字典用del命令,如下实例:

    # 基于 python 3 实现
    tinydict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
    
    del tinydict['Name']  # 删除键是'Name'的条目
    tinydict.clear()  # 清空字典所有条目
    del tinydict  # 删除字典
    
    print ("tinydict['Age']: ", tinydict['Age'])
    print ("tinydict['School']: ", tinydict['School'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9

    在这里插入图片描述
    输出结果如上,因为使用del后字典不再存在;

    0x04 判断字典是否包含指定key,用in或not in 运算符

    需要指出的是,对于 dict 而言,in 或 not in 运算符都是基于 key 来判断的。例如如下代码:

    #!/usr/bin/python
    # 判断cars是否包含名为'AUDI'的key
    cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
    
    print('AUDI' in cars)  # True
    # 判断cars是否包含名为'PORSCHE'的key
    print('PORSCHE' in cars)  # False
    print('LAMBORGHINI' not in cars)  # True
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    以上实例输出结果:

    True
    False
    True
    
    • 1
    • 2
    • 3

    0x2 字典键的特性

    字典值可以没有限制多地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不可以。
    有俩个重要的点需要记住:

    0x01

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

    #!/usr/bin/python
    # 基于 python 3 实现
    
    tinydict = {'Name': 'Runoob', 'Age': 7, 'Name': 'Manni'}
    
    print("tinydict['Name']: ", tinydict['Name'])
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    以上实例输出结果:

    tinydict['Name']:  Manni
    
    • 1

    0x2

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

    #!/usr/bin/python
    # 基于 python3
    tinydict = {['Name']: 'Zara', 'Age': 7}
    
    print("tinydict['Name']: ", tinydict['Name'])
    
    • 1
    • 2
    • 3
    • 4
    • 5

    以上实例输出结果:
    在这里插入图片描述

    0x3 字典内置函数&方法

    Python字典包含如下内置函数:

    • cmp(dict1,dict2) 比较俩个字典元素
      如果俩个字典的元素相同返回0,如果字典dict1大于字典dict2返回1,如果字典dict1小于字典dict2返回-1。
      **注意:**cmp函数在python3已经移除,如果要实现比较效果可以使用
    if dict1 == dict2:
        print("dict1 和 dict2 相等")
    else:
        print("dict1 和 dict2 不相等")
    
    • 1
    • 2
    • 3
    • 4
    • len()函数
      它可以用来获取字典中键-值对的数量,即字典的长度。
      示例:
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    length = len(my_dict)
    print(length)  # 输出:3
    
    • 1
    • 2
    • 3
    • str()函数
      可以用于将字典转换为字符串,通常用于调试或打印字典的内容。
      实例:
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    dict_str = str(my_dict)
    print(dict_str)  # 输出:{'a': 1, 'b': 2, 'c': 3}
    
    • 1
    • 2
    • 3
    • type()函数
      它可以用来检查对象的类型,包括字典。
      示例:
    my_dict = {'a': 1, 'b': 2, 'c': 3}
    dict_type = type(my_dict)
    print(dict_type)  # 输出:
    
    • 1
    • 2
    • 3
    • clear()方法,用于情况字典中所有的key-value对,使用clear()后字典会变成一个空字典。
    cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
    print(cars) # {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
    # 清空cars所有key-value对
    cars.clear()
    print(cars) # {}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • get()方法
      根据 key 来获取 value,,它相当于方括号语法的增强版,当使用方括号语法访问并不存在的 key 时,字典会引发 KeyError 错误;但如果使用 get() 方法访问不存在的 key,该方法会简单地返回 None,不会导致错误。
    cars = {'BMW': 8.5, 'BENS': 8.3, 'AUDI': 7.9}
    # 获取'BMW'对应的value
    print(cars.get('BMW')) # 8.5
    print(cars.get('PORSCHE')) # None
    print(cars['PORSCHE']) # KeyError
    
    • 1
    • 2
    • 3
    • 4
    • 5

    运行结果如下:
    在这里插入图片描述

    • update()方法
      可使用一个字典所包含的 key-value 对来更新己有的字典。
    dict1 = {'a': 1, 'b': 2}
    dict2 = {'b': 3, 'c': 4}
    
    # 使用update()方法将dict2的键值对合并到dict1中
    dict1.update(dict2)
    
    print(dict1)  # 输出:{'a': 1, 'b': 3, 'c': 4}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • items()、keys()、values()
    • pop()方法
    • popitem()方法
    • setdefault()方法
    • fromkeys()方法

    0x4 使用格式化字符串

    字符串插值或字符串格式化是一种常见的技术,用于将变量的值插入到字符串中,以便创建格式化的输出。可以使用百分号(%)操作符来执行字符串插值,也可以使用f-strings(在Python 3.6及更高版本中可用)或str.format()方法来格式化字符串。

    使用百分号(%)的操作:

    temp = '博主的名字是:%(name)s, 截止目前粉丝数是:%(price)010.2f, 学习方向是:%(publish)s'
    book = {'name': 'Sciurdae', 'price': 294, 'publish': 'Reverse'}
    # 使用字典为字符串模板中的key传入值
    print(temp % book)
    
    book = {'name': 'Sciurdae', 'price': 1000000, 'publish': 'Crypto'}
    # 使用字典为字符串模板中的key传入值
    print(temp % book)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    运行结果嘿嘿:
    在这里插入图片描述

    使用’format’的操作

    data = {'Name': 'Sciurdae', 'free': 294}
    formatted_string = "Name: {Name}, fensi: {free}".format(**data)
    print(formatted_string)
    
    • 1
    • 2
    • 3

    这将创建一个格式化的字符串,将data字典中的键值插入到字符串中
    运行结果:

    Name: Sciurdae, fensi: 294
    
    • 1
  • 相关阅读:
    Apache SeaTunnel Web 功能正式发布!
    UE 在场景或UMG中播放视频
    Thinking in JAVA:深入理解Java编程之道
    项目实施方案:多点异地机动车典型系统试验状态可视监控系统
    鹏哥C语言36-37---循环/分支语句练习(折半查找算法)
    js bom
    [附源码]计算机毕业设计springboot美发店会员管理系统
    Springboot企业生产报表管理系统的设计与实现7c063计算机毕业设计-课程设计-期末作业-毕设程序代做
    SpringBoot实践(三十四):Gradle的使用
    打靶笔记-03-vulnhub-Moriarty Corp
  • 原文地址:https://blog.csdn.net/Sciurdae/article/details/134062202