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("可迭代对象")
    
    
    
  • 相关阅读:
    Leetcode 191.位1的个数 By Python
    反向传播的推导
    Leetcode 268.缺失数字 By Python
    Leetcode 326.3的幂 By Python
    Leetcode 28.实现strStr() By Python
    Leetcode 7.反转整数 By Python
    Leetcode 125.验证回文串 By Python
    Leetcode 1.两数之和 By Python
    Hdoj 1008.Elevator 题解
    TZOJ 车辆拥挤相互往里走
  • 原文地址:https://www.cnblogs.com/zhangshan33/p/11166751.html
Copyright © 2011-2022 走看看