• 7.字典


    数据类型的分类(可变与不可变):

    • 可变(不可哈希)的数据类型:list dict set
    • 不可变(可哈希)的数据类型: str bool int tuple

    字典:{}括起来,以健值对形式存储的容器型数据类型:

    dic = {"key":1,1:123,False:True,(1,2,3):"abc",1:[1,3,4]}
    print(dic)
    
    • 键必须是不可变的数据类型,int str(bool tuple几乎不用)唯一的
    • 值可以是任意数据类型,对象
    • 字典是无序的,python3,6按照初次建立字典的顺序排列,学术上不认为是有序的,
    • 字典3,7x以后都是有序的
    • 字典是可变的,增加,删除,修改,查看 其他操作
    • 字典的优点:查询速度非常快,存储关联性的数据
    • 字典的缺点:以空间换时间
    1.字典的三种创建方式
    面试会考:
    方式一:
    dic = dict((('one', 1), ('two', 2), ('three', 3)))
    print(dic)  # {'one': 1, 'two': 2, 'three': 3}
    
    方式二:
    dic = dict(one=1, two=2, three=3)
    print(dic)
    
    方式三:
    dic = dict({'one': 1, 'two': 2, 'three': 3})
    print(dic)
    
    • 验证字典的合法性
    dic = {[1,2,3]: 'alex', 1: 666}  # 键要不可变的数据类型
    print(dic)
    dic = {1: 'alex', 1: '小刚', 2: 'wusir'}  # 键要唯一
    print(dic)
    
    2.字典的增删改查

    增:

    dic = {"a":"b","b":"c"}
    直接增加 有则改之 无则增加
    dic[键]=值
    dic['c']=c 增加
    dic['a']=1 改
    setdefault 有则不变 无则增加
    dic.setdefault("c","aaa") 
    print(dic)
    

    删:

    pop 按照键删除键值对,有返回值,返回的是删除的值***
    设置第二个参数则无论字典中有无此键都不会报错
    dic.pop('b')
    ret=dic.pop('b')
    ret=dic.pop('hobby','没有此键')
    print(ret)
    print(dic)
    del dic # 删除整个字典
    del dic['b'] #删除指定的键值对
    clear 清空
    dic.clear() 清空
    print(dic)删除整个字典中的键值对
    

    改:

     dic1 = {"a":"b","C":"c"}
     dic1['b']='值' 键在字典中存在就是修改,键在字典中不存在就是增加
     dic2 = {1:2,"a":"a1"}
     dic2.update(dic1)   # update括号里的字典级别高,括号中添加的是字典
     print(dic2)
    

    查:

    字典的查询只能通过键获取值,不能通过值获取键

    dic = {1:2,"a":"a1"}
    print(dic["c"])  # 如果有键在字典中存在就放回键对应的值,如果不存在就报错
    print(dic.setdefault(1))>>>返回的是字典的值
    print(dic.setdefault(2))>>>键不存在,返回的是None
    get  -- 获取***
    dic.get('c')#键不存在返回的是None
    dic.get('d','没有此键') 可以设置返回值,获取值的时候可以指定返回的内容,键不存在的时候不报错
    dic={'a':1}
    dic['a'] +=1
    dic.get('a')
    print(dic)
    dic = {1:2,"a":"a1"}
    for i in dic:#for循环字典的时候打印的是字典的键
        print(j,dic[i])
    

    例1:

    dic = {"1":1,"2":2,"3":3,"4":4}
    # 删除"2"  2种方式
    dic.pop("2")
    del dic["2"]
    # 添加 "5":5 2种方式
    
    dic.setdefault("5",5)
    dic["5"] = 5
    # 修改: "1":10086
    dic["1"] = 10086
    
    # 查看"3"的值
    dic.get("3",'没有值')
    dic["3"]  # 没有就会报错
    dic = {"1":1,"2":2,"3":3,"4":4}
    
    3.keys() values() items()

    print(dic.keys(),type(dic.keys()))

    可以转化成列表

    print(list(dic.keys()))

    li = []
    for key in dic:
        li.append(key)
    print(li)
    
    for i in dic.keys():#高仿列表
        print(i)
    
    print(type(dic.keys()))   可以for循环,但是不能索引
    dic_li = dic.keys()
    print(dic_li)
    
    dic = {"1":1,"2":2,"3":3,"4":4}
    print(dic.keys())>>>返回值#dict_keys(['1', '2', '3', '4'])
    print(dic.values())>>>返回值#dict_values([1, 2, 3, 4])
    print(dic.items())>>>返回值
    #dict_items([('1', 1), ('2', 2), ('3', 3), ('4', 4)])
    
    for i in dic.items():
        print(i)
    #循环打印每一个元祖
    ('1', 1)
    ('2', 2)
    ('3', 3)
    ('4', 4)
    
    4.解构
    a = 1
    b = 2
    print("is a",id(a))
    print("is b",id(b))
    a,b = b,a #改变的是内存地址的指向
    print("is a",id(a))
    print("is b",id(b))
    
    1560157067771
    a,_,c = "你好啊"
    print(a,c) >>>你 啊
    a,b分别赋值
    a,b=('1','2')
    print(a,b)
    a,b=['4','5']
    print(a,b)
    a,b={"a":1,"b":2,}#得到的是字典的键
    print(a,b)
    dic = {"1":1,"2":2,"3":3,"4":4}
    for key,value in dic.items():
        print(key,value)
    keys,values,items,解构
    dic={"1":1,"2":2,"3":3,"4":4}
    for  i in dic: #效率高
        print(i,dic[i])
    for k,v in dic.items():
        print(k,v)
    
    5.字典的循环取值
    dic = {"电脑":15000,"手机":8000,"耳机":4000,"手表":1111}
    1 电脑
    2 手机
    3 耳机
    4 手表
    
    for i in range(len(dic)):
        print(i+1)
    
    count = 1
    for i in dic:
        print(count,i)
        count += 1
    
    li = [1,2,3,4,54]
    for i,k in enumerate(li):  # enumerate 第二个参数默认不写就是0    -- 枚举
        print(i,k)
    
    
  • 相关阅读:
    Android打包报错 Export aborted because fatal lint errors were found. These are listed in the Lint View
    jqMobi 更小更快的移动框架
    php报错:Call to undefined function get_magic_quotes_gpc()
    php:字符窜截取substr和mb_substr
    Warning Creating default object from empty value in xxx.php
    linux下安装xampp
    程序员找不女朋友的原因
    键盘各种按键对应的ASII码
    Read All About It-Attraction舞团
    What are words-Chris Medina
  • 原文地址:https://www.cnblogs.com/pythonblogs/p/10999660.html
Copyright © 2020-2023  润新知