• python基础day5dict


    字典的初识:

    • why:列表可以储存大量的数据,但数据间的关联性不强。列表的查询速度比较慢。
    • 数据类型的分类(可变与不可变):
      • 可变(不可哈希)的数据类型:list dict set(集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键))
      • 不可变的数据类型(可哈希): str bool int tuple(该对象本身不可变),(做不可变类型做任何操作,方法都不会改变原对象)
    • 字典:{}括起来,以键值对形式储存的容器型数据类型。
      • 键必须是不可变的数据类型,最常用的是str int,键是不能改变且无法修改,而值可以改变,可修改,可以是任何对象
      • 键是不能重复的,而值可以重复。
      • 字典在3.5x版本之前(包括3.5)是无序的;字典在3.6x会按照初次建立字典的顺序排序的,学术上不认为是有序的。字典3.7x以后都是有序的。
      • 优点:查询速度非常快。
      • 缺点:以空间换时间,内存消耗巨大

    删除集合的方法:set.discard()

    字典的创建方式:

    dic = dict((('i',1),('love',2),('you',3)))
    print(dic)
    >>>{'i': 1, 'love': 2, 'you': 3}
    
    dic = dict(i=1,love=2,you=3)
    print(dic)
    >>>{'i': 1, 'love': 2, 'you': 3}
    
    dic = dict({'i': 1, 'love': 2, 'you': 3})
    print(dic)
    >>>{'i': 1, 'love': 2, 'you': 3}
    

    字典的增删改查:

    /1. 增

    #方法一,直接增加,已有键则改,无键则增加。
    dic = {'name':'山就在那儿'}
    dic['age'] = '18'
    print(dic)
    >>>{'name': '山就在那儿', 'age': '18'}
    
    dic['age'] = '20'
    print(dic)
    >>>{'name': '山就在那儿', 'age': '20', 'sex': '男'}
    
    #方法二,setdefault,有则不变,无则增加
    dic.setdefault('able')
    print(dic)
    >>>{'name': '山就在那儿','age':'20','able':None}
    
    
    dic.setdefault('hobby':python)
    print(dic)
    >>>{'name': '山就在那儿', 'age': '20', 'able':None,'hobby':python}
    
    dic.setdefault('age':18)
    print(dic)
    >>>{'name': '山就在那儿', 'age': '20', 'able':None,'hobby':python}
    
    
    

    /2 . 删:

    #方法一,pop(),按照键删除,有返回值,返回的为字典的值,如果没有要删除的键,则会报错,但可以设置第二个两个参数,无论字典中是否有此键,都不会报错,若有此键则返回值为此键的值,若无此键则,返回值为第二个参数。
    dic = {'name': '山就在那儿', 'age': '18'}
    value = dic.pop('age')
    print(dic)
    >>>{'name': '山就在那儿'}
    print(value)
    >>>18
    a = dic.pop('hobby')
    print(a)
    >>>KeyError: 'hobby'
    a = dic.pop('hobby','没有此键值对')
    print(a)
    >>>没有此键值对
    #方法二,del,若无键会报错,不推荐使用。
    del dic['age']
    #方法三,clear 清空
    dic.claer()
    print(dic)
    >>>{}
    

    /3. 改

    dic['name'] = 18
    

    添加多个元素的方法:dit.update() #见第六章

    /4. 查:

    dic = {'name':'山就在那儿','hobby_list':['book','python']}
    print(dic['hobby_list'])  #若没有此键则会报错,不建议用
    >>>['book','python']
    l1 = dic.get('hobby_list')   #若没有键则会返回None,可以定义第二个参数,第二个参数即为返回值
    print(l1)
    >>>['book','python']
    
    #keys() 
    print(dic.keys())   #会返回一个dict_keys类型,包含字典中所有的键,和列表相似,但不能索引,可转化成列表:list(),可遍历
    >>>dict_keys(['name', 'hobby_list'])
    
    #values()
    print(dic.values())   #会返回一个dict_values类型,包含字典中所有的值,和列表相似,但不能索引,可转化成列表:list(),可遍历
    >>>dict_values(['山就在那儿', ['book', 'python']])
    
    #items()
    print(dic.items())
    >>>dict_items([('name', '山就在那儿'), ('hobby_list', ['book', 'python'])])
    for k,v in dic.items():     #元祖的拆包  for i in dic.items()  print(i)   打印的结果数据为元祖
        print(k,v)
    >>>name 山就在那儿
    hobby_list ['book', 'python']
    

    /5. 字典的推导式的方式略有不同,主要是因为创建字典必须满足键-值的两个条件才能达成

    dit = {i:i+1 for i in range(4)}

    dit = {i:j for i,j in zip(range(4),’abcd’)}

    /6. 字典的嵌套:

  • 相关阅读:
    MySQL行级锁、表级锁、页级锁详细介绍
    Spring REST是什么?(转)
    Spring REST(转)
    联系人项目
    三级联动(有刷新)
    Java中点击按钮返回上一页
    Java中隐藏显示效果
    理解RESTful架构(转)
    什么是REST?以及RESTful的实现(转)
    JSTL 核心标签库 使用(转)
  • 原文地址:https://www.cnblogs.com/wby-110/p/12499932.html
Copyright © 2020-2023  润新知