• python学习笔记-day05 字典


    数据类型

    数据类型可以分为可变数据类型和 不可变数据类型两种:

    不可变数据类型:元组(tuple),bool, int,  str(对字符串的任何操作都是产生一个新的str,园幼儿字符串是不变的)

    可变数据类型: 列表(ist),字典(dict)

    字典

    字典:映射结构,字典的key必须是不可变数据类型(元组,bool int ,str)

    字典的优点:二分查找;可存储大量的关系型数据

    增:

    1.直接增加键值对:

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic['hobbi']='dancing'
    print(dic)

    运行结果:

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic['hobbi']='dancing'
    print(dic)

    如果添加的键值是字典中已经存在的键,则会覆盖该键对应的原来的值:

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic['hobbi']='dancing'   #如果没有,会增加
    dic['name']='xuanzhang'  #如果有,会覆盖
    print(dic)

    运行结果:

    {'name': 'xuanzhang', 'age': 22, 'gender': 'female', 'hobbi': 'dancing'}

    2.setdefault()方法

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic.setdefault('hobbi')   #值缺省,默认添加的对应该键的值为None
    # dic.setdefault('hobbi','dancing')
    print(dic)

    运行结果:

    {'name': 'xuanxuan', 'age': 22, 'gender': 'female', 'hobbi': None}

    如果setdefault()后面value对应的参数有值,则添加:

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    # dic.setdefault('hobbi')   #值缺省,默认添加的对应该键的值为None
    dic.setdefault('hobbi','dancing')
    print(dic)

    运行结果:

    {'name': 'xuanxuan', 'age': 22, 'gender': 'female', 'hobbi': 'dancing'}

    如果setdefault中的键已经存在,则无任何变化:

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic.setdefault('name','xuan')
    print(dic) 

    运行结果:

    {'name': 'xuanxuan', 'age': 22, 'gender': 'female'}

    所以,通过dict[key]=value 和dict.setdefault(key,value)方法的区别是:

    当key在字典中不存在时,两种方法都是在字典中增加该键值对;

    当key在字典中已经存在时,前者会修改,即覆盖,后者不会修改原来的值,即无变化,不进行任何操作;

    删:

    dic.pop(key)方法:  有返回值,返回键对应的值

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    return_value=dic.pop('name')    # pop()方法有返回值,返回该键对应的值
    print(return_value)

    运行结果:

    xuanxuan

    dic.popitem():随机删除字典的键值对(python3.6字典有序,删最后一个),有返回值,返回键值对组成的tuple

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    return_value=dic.popitem()    # pop()方法有返回值,返回该键对应的值
    print(return_value)

    运行结果:

    ('gender', 'female')

    dict.clear()  #不是从内存中删除,只是删除字典中的元素,clear之后字典为空

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic.clear()  #不是从内存中删除,没有返回值
    print(dic)   #字典空

    运行结果:

    {}

    del dict : 删除字典,从内存中彻底删除,也可以指定删除某一个键

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    del dic['name']  #可以删掉字典中的某一个键值对
    print(dic)  

    运行结果:

    {'age': 22, 'gender': 'female'}

     删除整个字典(从内存)

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    del dic  #从内存中删掉字典
    print(dic)  #会报错

    运行结果:

    Traceback (most recent call last):
      File "F:/workspace_python/pycharm_projects/fullstack2018-08-17/week2/day07/01.py", line 12, in <module>
        print(dic)  #会报错
    NameError: name 'dic' is not defined

    改:

    1. 可以直接指定键,通过赋值修改(因为字典是可变对象)

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic['name']='xuan'
    print(dic)

    运行结果:

    {'name': 'xuan', 'age': 22, 'gender': 'female'}

    2.dict1.update(dict2) 会更新dict1(按照dict2)

    dict2有dict1中的键,则会覆盖dict1,如果dict1中没有,则会追加到dict1

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    dic2={'name':'xuanzhang','job':'student'}
    dic2.update(dic)
    print(dic2)

    运行结果:

    {'name': 'xuanxuan', 'job': 'student', 'age': 22, 'gender': 'female'}

    查:

    dict.keys()     #返回字典的键,返回的结果可以当做list操作

    dict.values()  #返回字典的值,返回的结果可以当做list操作

    dic.itmes()    #返回字典的键值 成一个tuple 返回的结果可以当做list操作

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    print(dic['name'])

    运行结果:

    xuanxuan
    dic={'name':'xuanxuan','age':22,'gender':'female'}
    print(dic.keys())    #返回的是dic的键,可以按照list进行操作
    print(dic.values())  #返回的是dic的值,可以相当于list进行操作
    print(dic.items())  #返回的是键值组成的tuple

    运行结果:

    dict_keys(['name', 'age', 'gender'])
    dict_values(['xuanxuan', 22, 'female'])
    dict_items([('name', 'xuanxuan'), ('age', 22), ('gender', 'female')])
    dic={'name':'xuanxuan','age':22,'gender':'female'}
    for i in dic:   # for i in dic.keys():两种方法都是返回dic的key
        print(i)

    运行结果:

    name
    age
    gender

    dic.values()

    for i in dic.values():
        print(i)

    运行结果:

    xuanxuan
    22
    female

    dic.items()

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    for i in dic.items():
        print(i)

     运行结果:

    ('name', 'xuanxuan')
    ('age', 22)
    ('gender', 'female')

    dic.get(key,None)  #返回字典的对应的值,当键不存在时,可以返回默认值None,当然也可以设置

    dic={'name':'xuanxuan','age':22,'gender':'female'}
    print(dic.get('name'))  #xuanxuan
    print(dic.get('name1','该键值不存在'))  #并不会报错,

    运行结果:

    xuanxuan
    该键值不存在
    talk is cheap,show me the code
  • 相关阅读:
    Java实现 LeetCode 30 串联所有单词的子串
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 29 两数相除
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 28 实现strStr()
    Java实现 LeetCode 27 移除元素
    Java实现 LeetCode 27 移除元素
    字符编码终极笔记:ASCII、Unicode、UTF-8、UTF-16、UCS、BOM、Endian
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9510742.html
Copyright © 2020-2023  润新知