zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    【P1133】 教主的花园
    【P1095】 守望者的逃离
    【P1063】 能量项链
    【模板】st表
    【模板】单源最短路径——Floyd
    jQuery的XX如何实现?——4.类型检查
    jQuery的XX如何实现?——3.data与cache机制
    jQuery的XX如何实现?——2.show与链式调用
    jQuery的XX如何实现?——1.框架
    《拖延症再见》
  • 原文地址:https://www.cnblogs.com/xuanxuanlove/p/9510742.html
Copyright © 2011-2022 走看看