zoukankan      html  css  js  c++  java
  • python 第五章 字典

    python 第五章

    # # !/usr/bin/python
    # # -*- coding: utf-8 -*-
    # # @File    : 总结.py
    # # @time    : 2019-07-1010:26
    # # @Author  : zhangshan33
    #
    # 字典 -- dict
    # 字典:
    # 是无序的,可变的数据类型
    # 用于存储数据,存储大量数据 字典比列表快,将数据和数据之间进行关联
    
    lst1 = ["常鑫","李文虎","张宇"] # 姓名
    lst2 = [10,80,100] #分数
    print(lst1[0],lst2[0])# 取lst1 的第一位和lst2 的第一位
    # 输出 常鑫 10
    
    # 定义一个字典
    # 格式:
    # 变量名 = {} 大括号
    # 逗号分割为一个元素
    # 逗号内跟键值对,冒号隔开
    dic1 = {"常鑫":10,"李文虎":80,"张宇":100,True:123}
    print(dic1)# 输出的格式为字典型
    # 输出 
    # {'常鑫': 10, '李文虎': 80, '张宇': 100, True: 123}
    
    # 俗称键值对:
    # "阿":10
    #  键   值
    
    # 可哈希的值 -- 不可变的数据类型(str,bool,tuple, int)避免哈希冲突,使用开放寻址法
    # 不可哈希的 -- 可变的数据类型(list,dic,set)
    # 可以做字典key的类型: str,int,bool,tuple(,),None
    # 可以做集合的元素的类型:是字典的key
    # 不可以做的类型:list[,]、dic{:}、set{,}
    
    
    # 字典的键里可放:
    # 使用可哈希的值(不可变的数据类型)
    # 不建议使用int,不唯一
    # 唯一,重复取后值,取代前者
    
    # 字典值:
    # 可以任意
    
    dic = {"常鑫":[1,2,3],"李文虎":80,"张宇":100,10:"大黑哥",True:123,(1,2,3):"大煎饼","常鑫":0.5}
    print(dic)
    # 输出 {'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼'}
    
    # 使用频率优先级:
    # 字典>列表>字符串
    
    
    
    # 增:
    # dic["键"] = "值"  暴力添加
    dic["123"] = "321"
    print(dic)
    # 输出 {'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼', '123': '321'}
    
    # dic.setdefault("键","值") 存在不添加
    
    # 1、先进行键查询,如果没有,执行添加
    dic.setdefault("234","345")
    print(dic)
    # 输出 {'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼', '123': '321', '234': '345'}
    
    # 2、如果存在,不添加
    dic.setdefault("123","456")
    print(dic) # 不添加
    # 输出 {'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼', '123': '321', '234': '345'}
    
    # 删除:
    # del dic["键"]  通过键删除键值对
    del dic["123"]
    print(dic)
    # 输出 {'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼', '234': '345'}
    
    # dic.pop("键")  通过键删除键值对 返回值:返回被删除的值
    dic.pop("234")
    print(dic)
    # 输出{'常鑫': 0.5, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼'}
    
    # dic.clear() 清空
    dic1 = {"123":"321","aaa":123}
    dic1.clear()
    print(dic1)
    # 输出 {}
    
    
    # 改:
    # dic["键"] = "值" 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候,就是修改(有则改,无则加)
    dic["常鑫"] = 1
    print(dic)
    # 输出 {'常鑫': 1, '李文虎': 80, '张宇': 100, 10: '大黑哥', True: 123, (1, 2, 3): '大煎饼'}
    
    # dic.update({"1":3,"2":4})("要更新的字典")
    dic2 = {"123":"321","aaa":123}
    dic2.update({"345":"ii"})# 直接更新
    print(dic2)
    # 输出 {'123': '321', 'aaa': 123, '345': 'ii'}
    
    dic2.update({"123":"456"})
    print(dic2)
    # 输出 {'123': '456', 'aaa': 123, '345': 'ii'}
    # update 括号中的级别高于update前面的字典,后面的覆盖前面的
    
    # 查:
    # 不能索引
    # for  循环 支持for循环,获取的是字典中的每个键
    for i in dic:
        print(i)
    # 输出
    # 常鑫
    # 李文虎
    # 张宇
    # 10
    # True
    # (1, 2, 3)
    
    
    # dic.get("键") 通过键获取值,如果不存在字典中,返回none
    print(dic.get("常鑫"))
    # 输出 1
    print(dic.get("l"))
    # 输出 None
    
    # dic["键"]     通过键获取值,如果不存在字典中,提示报错
    #print(dic["l"])
    # 报错
    
    print(dic["李文虎"])
    # 输出 80
    
    # 其他操作:
    dic3 = {"123":"abc","234":"efg"}
    # print(i,dic3.get(i))  获取所有键和值
    for i in dic3:
        print(i,dic3.get(i))
    # 输出
    # 123 abc
    # 234 efg
    
    # 获取所有的键 存在一个高仿列表中
    # print(dic3.keys())
    print(dic3.keys())
    # 输出 dict_keys(['123', '234'])
    
    # 获取所有的值 存在一个高仿列表中
    # print(dic3,values())
    print(dic3.values())
    # 输出 dict_values(['abc', 'efg'])
    
    # 获取所有的键和值 存在一个高仿列表里的元组
    # print(dic3.items())
    print(dic3.items())
    # 输出 dict_items([('123', 'abc'), ('234', 'efg')])
    
    # 解构
    a,b = 10,12
    a,b = b,a
    print(a,b)
    # 输出 12 10
    
    a,b = [1,2]# 列表可以
    print(a,b)
    # 输出 1 2
    a,b = (3,4)# 元组
    print(a,b)
    # 输出 3 4
    
    a = 10,12# 本质是一个元组
    print(a)
    # 输出(10,12)
    a,b = "23"
    print(a,b)
    # 输出 2 3
    
    a,b = {"123":"a","234":"b"}
    print(a,b)
    # 输出 123 234
    
    a,_,b = (5,6,7)# 赋值若不想用,可用_替换,要一一对应
    print(a,b)
    # 输出 5 7
    
    
    
    # for 循环输出全部键和值 ,输出元组
    for i in dic3.items():
        print(i)
    # 输出
    # ('123', 'abc')
    # ('234', 'efg')
    
    # for 循环输出全部键和值,输出元素
    for i in dic3.items():
        print(i[0],i[1])
    # 输出
    # 123 abc
    # 234 efg
    
    # for 输出元素
    # for 循环输出全部键
    for i in dic3.keys():
        print(i)
    # 输出
    # 123
    # 234
    
    # for 循环输出全部值
    for i in dic3.values():
        print(i)
    # 输出
    # abc
    # efg
    
    # for与解构共用 k,v
    # 获取每个元素的键和值
    for k,v in dic3.items():
        print(k,v)
    # 输出
    # 123 abc
    # 234 efg
    
    
    # 字典的嵌套
    # 字典直接输键,列表用索引
    # 查找的时候一层一层的通过键进行查找
    dic = {1001:["周杰伦","林俊杰"],
           1002:{"汪峰":{"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
           1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
           1004:{"韦小宝":[{"教主夫人":["教主"]},
                        {"阿珂":"刺客"},
                        {"双儿":"天地会"},
                        {"爱心觉罗建宁":"公主"},
                        {"独臂神尼":{"韦小宝师父":{"兰陵王":"隐身"},"花木兰":[
                               "唧唧复唧唧","木兰是战士",{"爸爸":["花和尚"]}]
                                 }},
                        {"陈圆圆":"丈母娘"},{"穆建平":"小郡主"}]},
           1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]}
           }
    
    
    # print(dic)
    # print(dic[1004]["韦小宝"][0]["教主夫人"][0])
    # print(dic[1005]["常鑫"][-1])
    # print(dic[1002]["汪峰"]["前妻2"][-1])
    # print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
    # print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
    
    

    今日总结

    # # !/usr/bin/python
    # # -*- coding: utf-8 -*-
    # # @File    : 总结.py
    # # @time    : 2019-07-1010:26
    # # @Author  : zhangshan33
    #
    # 字典 -- dict
    #
    # 字典:
    # 是无序的,可变的数据类型
    # 用于存储数据,存储大量数据 字典比列表快
    #
    # 格式:
    # 变量名 = {} 大括号
    # 逗号分割为一个元素
    #
    #
    #
    # 可哈希的值 -- 不可变的数据类型(str,bool,list)避免哈希冲突,使用开放寻值法
    # 不可哈希的 -- 可变的数据类型(int tuple)
    
    # 俗称键值对:
    # "阿":10
    # 字典的键里可放:
    # 必须是可哈希的值
    # 唯一,重复取后值,取代前者
    #
    #
    #
    # 字典值可以任意
    #
    # 使用频率优先级:
    # 字典>列表>字符串
    #
    # 增:
    # dic["键"] = "值"  暴力添加
    # dic.setdefault("键","值") 存在不添加
    # 1、先进行键查询,如果没有,执行添加,如果存在,不添加
    #
    # 删除:
    # del dic["键"]  通过键删除键值对
    # dic.pop("键")  通过键删除键值对 返回值:返回被删除的值
    # dic.clear() 清空
    #
    # 改:
    # dic["键"] = "值" 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候,就是修改(有则改,无则加)
    # dic.update({"1":3,"2":4})({"要更新的字典"})
    # update 括号中的级别高于update前面的字典,后面的覆盖前面的
    #
    # 查:
    # for i in dic: 循环 获取的是字典中的每个键,支持for循环
    # 不能索引
    # dic.get("键") 通过键获取值,如果不存在字典中,返回none
    # dic["键"]     通过键获取值,如果不存在字典中,提示报错
    # dic.setdefault("键")通过键获取值
    #
    # 其他操作:
    # print(dic1,keys())    获取所有的键 存在一个高仿列表中
    # print(dic1,values())  获取所有的值 存在一个高仿列表中
    # print(dic1.items())   获取所有的键和值 存在一个高仿列表里的元组(元组第一个元素键,第二个值)
    # print(i,dic1.get(i))  获取所有键和值
    # for i in dic:
    #   print(i,dic[i])     获取所有的键和值
    #
    #
    #
    # 解构:
    # a = 10
    # b = 20
    # a,b = b,a
    #
    # 赋值不想用,可用_替换,要一一对应
    #
    # for循环:
    # for循环打印每个键和值的元组
    # for循环打印每个键和值的元素
    # for循环打印键的元素
    # for循环打印值的元素
    # for与解构共用,获取每个键和值k,v
    #
    #
    # 字典的嵌套
    # 字典直接输键,列表用索引
    # 查找的时候一层一层的通过键进行查找
    #
    # "拼接符号".join("可迭代对象")
    
    
    
  • 相关阅读:
    Win7操作系统防火墙无法关闭的问题 无法找到防火墙关闭的地方的解决的方法
    【微信】微信获取TOKEN,以及储存TOKEN方法,Spring quartz让Token永只是期
    OC内存管理总结,清晰明了!
    下次自己主动登录(记住password)功能
    linux删除svn版本号库
    Python中可避免读写乱码的一个强慷慨法
    Tomcat源代码阅读#1:classloader初始化
    iOS关于图片点到像素转换之杂谈
    hdu 3804树链剖分+离线操作
    cdn缓存
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11166751.html
Copyright © 2011-2022 走看看