• python字典(dictionary)


    字典

    字典组成

    字典由键(key)和值(value)组成;字典元素由{}括在一起

    dic = {key1 : value1, key2 : value2 }

    key是字典中的键,value是该键对应的值;key : value称之为键值对

    字典的创建

    • 直接按照定义创建
    # 直接按照定义创建
    d = {"name":"zhangsan", "age":18, "sex":"man"}
    print(d)
    
    • 1
    • 2
    • 3
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    
    • 1
    • dict()
    # 使用dict()方法
    d = dict(name = "zhangsan", age = 18, sex = "man")
    print(d)
    
    • 1
    • 2
    • 3
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    
    • 1
    # 使用dict()方法 ,将一个元组列表转换为字典
    l = [("name" , "zhangsan"), ("age" , 18), ("sex" ,"man")]
    d = dict(l)
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    
    • 1
    # 使用dict()方法 ,将一个打包后的元组转换为字典
    key = ("name", "age", "sex")
    value = ("zhangsan", 18, "man")
    d = dict(zip(key,value))
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    
    • 1
    • 使用推导式
    dn = {a:a ** 2 for a in range(5)}
    print(dn)
    
    • 1
    • 2
    {0: 0, 1: 1, 2: 4, 3: 9, 4: 16}
    
    • 1
    • 使用zip()将两个序列绑定
    l = ["name","age","sex"]
    l1 = ["lisi",18,"man"]
    
    d = dict(zip(l,l1))
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    {'name': 'lisi', 'age': 18, 'sex': 'man'}
    
    • 1

    字典访问

    不同于列表元素只能用整数下标访问,字典的key值可以是整数、字符串、元组等,但是不可以用列表,因为列表的值可以是可以改变的。

    print(d["name"])
    
    • 1
    zhangsan
    
    • 1

    字典的key值是唯一的,但是其对应的值是可修改的

    # 通过key访问修改其对应的值value
    d["name"] = "lisi"
    print(d)
    
    • 1
    • 2
    • 3
    {'name': 'lisi', 'age': 18, 'sex': 'man'}
    
    • 1
    # 删除字典的键值对
    del d["age"]
    print(d)
    
    • 1
    • 2
    • 3
    {'name': 'zhangsan', 'sex': 'man'}
    
    • 1
    # 遍历字典
    for key in d:
        print('**key:{}'.format(key))
    for value in d:
        print('##value:{}'.format(value))
    for itme in d.items():
        print('$$itme:{}'.format(itme))
    for key,value in d.items():
        print('&&key:{},value:{}'.format(key,value))
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    **key:name
    **key:sex
    ##value:name
    ##value:sex
    $$itme:('name', 'zhangsan')
    $$itme:('sex', 'man')
    &&key:name,value:zhangsan
    &&key:sex,value:man
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    字典的方法

    • 字典的长度(键值对个数)
    # len()
    print(len(d))
    
    • 1
    • 2
    2
    
    • 1
    • 将字典传换为字符串输出
    # str()
    s = str(d)
    print(s)
    print(type(s))
    
    • 1
    • 2
    • 3
    • 4
    {'name': 'zhangsan', 'sex': 'man'}
    <class 'str'>
    
    • 1
    • 2
    • 字典拷贝
    # copy()
    d1 = d.copy()
    print(d1)
    d["name"] = "lisi" # d的修改不会影响到d1
    print(d)
    print(d1)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {'name': 'zhangsan', 'sex': 'man'}
    {'name': 'zhangsan', 'sex': 'man'}
    
    • 1
    • 2
    • 给指定的key值创建出字典
    # fromkeys()
    keys = ['name','age','sex']
    # 不指定value,就是None
    d = dict.fromkeys(keys)
    print(d)
    # 指定默认value
    d = dict.fromkeys(keys,"zhangsan")
    print(d)
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    {'name': None, 'age': None, 'sex': None}
    {'name': 'zhangsan', 'age': 'zhangsan', 'sex': 'zhangsan'}
    
    • 1
    • 2
    • 获取指定key对应的value
    # get()
    d = dict(name = "zhangsan", age = 18, sex = "man")
    print(d.get("name"))
    # 没有对应的值时,返回None
    print(d.get("addr"))
    # 可以返回指定的值
    print(d.get("addr","xian"))
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    zhangsan
    None
    xian
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    
    • 1
    • 2
    • 3
    • 4
    • 设置默认键值
    # setdefault()
    # 和get()类似,在key的值不存在时,可设置默认值,不同的是setdefault()会将设置的默认键值对添加到字典中
    d.setdefault("name","lisi")
    print(d)
    d.setdefault("addr","Xian")
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {'name': 'zhangsan', 'age': 18}
    {'name': 'zhangsan', 'age': 18, 'addr': 'Xian'}
    
    • 1
    • 2
    • 获取字典中的键值对
    # items()
    items = d.items()
    print(items)
    print(type(items))
    # 可通过list()将其转换为列表
    l = list(items)
    print(l)
    print(type(l))
    # 可用于遍历字典
    for item in d.items():
        print(item)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    dict_items([('name', 'zhangsan'), ('age', 'zhangsan'), ('sex', 'zhangsan')])
    <class 'dict_items'>
    [('name', 'zhangsan'), ('age', 'zhangsan'), ('sex', 'zhangsan')]
    <class 'list'>
    ('name', 'zhangsan')
    ('age', 'zhangsan')
    ('sex', 'zhangsan')
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 删除字典最后一个键值对
    # popitem()
    print(d)
    print("del item is ",d.popitem())
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    {'name': 'zhangsan', 'age': 18, 'addr': 'Xian'}
    del item is  ('addr', 'Xian')
    {'name': 'zhangsan', 'age': 18}
    
    • 1
    • 2
    • 3
    • 删除指定key对应的键值对
    # pop()
    d = dict(name = "zhangsan", age = 18, sex = "man")
    print(d)
    # key值不存在会报 KeyError
    print("del key is age value is ",d.pop("age"))
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    {'name': 'zhangsan', 'age': 18, 'sex': 'man'}
    del key is age value is  18
    {'name': 'zhangsan', 'sex': 'man'}
    
    • 1
    • 2
    • 3
    • 更新字典
    # update()
    # 键值对存在就更新,不存在则添加
    print(d)
    d.update({"name":"lisi"})
    print(d)
    d1 = {"name":"zhangsan", "addr":"xian"}
    d.update(d1)
    print(d)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    {'name': 'zhangsan', 'sex': 'man', 'addr': 'xian'}
    {'name': 'lisi', 'sex': 'man', 'addr': 'xian'}
    {'name': 'zhangsan', 'sex': 'man', 'addr': 'xian'}
    
    • 1
    • 2
    • 3
  • 相关阅读:
    苏东坡在元丰五年
    滑动窗口总结
    兼容并蓄广纳百川,Go lang1.18入门精炼教程,由白丁入鸿儒,go lang复合容器类型的声明和使用EP04
    计算机网络【CN】IPV4报文格式
    VINS-Mono-后端优化 (二:预积分残差雅可比推导)
    【语音识别】高斯混合模型(GMM)说话人识别【含Matlab源码 574期】
    .NET版Word处理控件Aspose.Words功能演示:从C#.NET中的模板生成Word文档
    RISC-V 特权级架构
    重写Object类的方法
    ssm校园拼车服务系统毕业设计源码211633
  • 原文地址:https://blog.csdn.net/Ghost_199503/article/details/125612122