zoukankan      html  css  js  c++  java
  • Python中的dict字典详解

    # ========================字典(dict)基本方法===========================
    # 用途:
    # 定义方式:通过大括号来存储数据,通过key:value来定义键值对数据,每个键值对中间通过逗号分隔
    
    # key:一定是一个不可变类型
    # value:可以是任意类型

    定义方式

    定义:在{}内用各元素用逗号隔开,每个元素都是 key:value的形式,其中value可以是任意类型, 而key必须是不可变类型。一般而言,key是str类型,因为字符串类型可以对value有描述性功能

    my_dict = {'name': 'yyh', 'age': 18, 'sex': 'male'}
    # 等价于
    my_dict = dict({'name': 'yyh', 'age': 18, 'sex': 'male'})

    类型转换

    # 转换1:
    my_dict = dict([['name', 'yyh'], ('age', 18)]) print(my_dict) >>>{'name': 'yyh', 'age': 18}
    # 转换2:
    my_dict = {}.fromkeys(('name','age','sex'),None) print(my_dict)

    >>>{'name': None, 'age': None, 'sex': None}
    # fromkeys()将元组内的值分别取出作为Key与None(第二个参数)形成配对
    # dict + zip生成字典
    my_dict = dict(zip(['k1', 'k2', 'k3'], [1, 2, 3]))
    print(my_dict)

    操作

    # 1.取值
    print(my_dict['name'])
    print(my_dict['hobbies'][0])
    # 赋值 ps:如果键已存在,则会改变对应的值
    my_dict['sex'] = 'male'
    my_dict['age'] = 20
    print(my_dict)
    # 2.长度
    print(len(my_dict))
    
    # 3.in 和 not in 判断某个值是否为dict的key
    print('name' in my_dict)
    
    # 4.删除 pop()删除指定的key及对应的value,并返回value的值
    print(my_dict.pop('name'))
    # 5.keys(),values()和items()
    print(my_dict.keys())       # 返回所有的key
    print(my_dict.values())     # 返回所有的value
    print(my_dict.items())      # 返回所有的键值对
    # 6.for循环遍历
    for key in my_dict:     # 默认遍历为key
        print(key)
    
    for key in my_dict.keys():
        print(key)
    
    for value in my_dict.values():      # 遍历value
        print(value)
    
    for key,value in my_dict.items():       # 遍历键值对
        print(key,':',value,sep='')
    # 7.get()
    print(my_dict.get('name'))     # 返回对应的value
    print(my_dict.get('aaa',200))       # 如果不存在指定的key,默认返回None,第二个参数可设置返回值(200)
    
    # 8.pop()
    print(my_dict.pop('name'))    # 删除指定的key和value,并返回value
    
    # 9.popitem()
    print(my_dict.popitem())      # 随机删除一对键值,将被删除的key和value在元组内返回
    # 10.update()  # 用新字典更新旧字典,有则更改,无则添加(只增不减)
    my_dict = {
        'name': 'yyh',
        'age': 19,
        'hobbies': ['basketball', 'running']
    }
    my_dict.update({'sex': 'male'})
    print(my_dict)

    >>>{'name': 'yyh', 'age': 19, 'hobbies': ['basketball', 'running'], 'sex': 'male'}
    # 11.fromkeys()
    print(my_dict)
    my_dict = {}.fromkeys(['k1','k2','k3'],[])
    print(my_dict)
    >>>

    {'name': 'yyh', 'age': 19, 'hobbies': ['basketball', 'running']}
    {'k1': [], 'k2': [], 'k3': []}

    # 12.setdefault()
    my_dict = {
        'name': 'yyh',
        'age': 19,
        'hobbies': ['basketball', 'running']
    }
    res = my_dict.setdefault('name','jxx')      # 如果键已存在,值不会发生改变
    print(res)                                  # 输出为 yyh
    res = my_dict.setdefault('sex','male')      # 如果键不存在,会新增
    print(res)
    print(my_dict)
    # =========================类型总结==========================
    # 有序or无序  : 无序
    # 可变or不可变  :可变类型
    # 存一个值or存多个值 : 存多个值
  • 相关阅读:
    Java 核心编程——文件随机读写类(RandomAccessFile)
    java 核心编程——文件过滤类(FileFilter和FilenameFilter)
    java 核心编程 ——文件操作类File
    java 编程思想笔记(七)——异常
    java 编程思想笔记(六)——内部类
    enote笔记法使用范例(2)——指针(1)智能指针
    enote笔记法使用范例(1)——自己总结的一些编写代码的常识 (a)
    enote笔记语言(2)
    enote笔记语言(1)
    monkey命令——压力测试——转载参考07
  • 原文地址:https://www.cnblogs.com/Ghostant/p/11793159.html
Copyright © 2011-2022 走看看