• 5.Python初窥门径(字典)


    Python字典学习

    1.字典初识

    ​ 1.字典的简单介绍
    ​ 字典(dict),是python中唯一的映射类型.他是以{ }括起来的键值对组成.在dict中key是唯一的.在保存的时候,根据key来计算出一个内存地址.然后将key-value保存在这个地址中.这种算法被称为hash算法, 所以, 切记, 在dict中存储的key-value中的key'必须是可hash的,如果你搞不懂什么是可哈希.
    ​ 已知的可哈希(不可变)的数据类型: int, str, tuple, bool

    ​ 2.语法 : {key1: value1, key2: value2....}

    ​ 3.注意 : key必须是不可变(可哈希)的. value没有要求,可以保存任意类型的数据,字典保存的数据时是无序的,因此不能用索引查找,只能用key来获取字典中的数据.

    # key合理情况
    dic = {123:456,True:False,"武当":"太极", "少林":'罗汉',"峨眉":"师太","丐帮":['祥龙','伏虎'], (1,2,3):"大挪移"}
    print(dic[123]) # 456
    print(dic[True]) # False
    print(dic['武当']) # 太极
    print(dic[(1,2,3)]) # 大挪移
    print(dic["丐帮"]) # ["祥龙","伏虎"]
    ---------------------------------
    # key不合理情况
    dic = {[1,2,3]:456} # 列表是可变的,不能作key
    dic = {{1:2}:"哈哈哈"} # 字典是可变的,不能作key
    dic = {{1,2,3}:'呵呵呵'} # 集合是可变的,不能作key
    

    2.字典增删改查和其他操作

    ​ 1.字典增加

    dic = {}
    dic["name"] = '张三丰' # 如果dict中没有出现这个key, 就会新增一个key-value的组合增加到dict中
    dic["age"] = 101
    print(dic) # {'name':'张三丰','age':101}
    ---------------------------------
    # 如果dict中没有出现过这个key-value.可以通过setdefault设置默认值
    dic.setdefault('张三丰') # 也可以往里面设置值
    dic.setdefault("张三丰","太极") # 如果dict中已经存在了,那么setdefault将不会起作用
    print(dic)
    

    ​ 2.字典删除

    # pop删除 # 会有返回值
    ret = dic.pop("jay")
    print(ret)
    ---------------------------------
    # del删除
    del dic["jay"]
    print(dic)
    ---------------------------------
    # 随机删除.
    ret = dic.popitem()
    ---------------------------------
    # 清空字典中的所有内容
    dic.clear()
    

    ​ 3.字典修改

    dic = {"武当":"太极","少林":"罗汉"}
    dic1 = {"峨眉":"师太","少林":"伏虎"}
    dic.update(dic1) # 把dic1中的内容更新到dic中,如果key重名则修改替换,如果不存在key则新增.
    print(dic) # {"武当":"太极","少林":"伏虎","峨眉":"师太"}
    print(dic1) # {"峨眉":"师太","少林":"伏虎"}
    

    ​ 4.字典查询

    ​ 一般用key来查找具体的数据

    # 通过key值查询
    dic = {"武当":"太极","少林":"伏虎","峨眉":"师太"}
    print(dic['武当']) # 太极
    # print(dic['太极']) # 报错
    ---------------------------------
    # 用git + key方法查找
    print(dic.get("ok")) # None
    print(dic.get("武当")) # 太极
    print(dic.get("华山", "不存在")) # 不存在
    

    ​ 5.字典其他相关操作

    dic = {123:456,True:False,"武当":"太极", "少林":'罗汉',"峨眉":"师太","丐帮":['祥龙','伏虎'],(1,2,3):"大挪移"}
    ---------------------------------
    # 取key
    print(dic.keys()) # dict_keys([123, True, '武当', '少林', '峨眉', '丐帮', (1, 2, 3)]) 不用管它是什么当成list来看就行,不可以直接用迭代方式可直接用.
    ---------------------------------
    # 取values
    print(dic.values()) # dict_values([456, False, '太极', '罗汉', '师太', ['祥龙', '伏虎'], '大挪移']) 同样,也当list来看,不可以直接用迭代方式可直接用.
    ---------------------------------
    # 同时取key和values
    print(dic.items()) # dict_items([(123, 456), (True, False), ('武当', '太极'), ('少林', '罗汉'), ('峨眉', '师太'), ('丐帮', ['祥龙', '伏虎']), ((1, 2, 3), '大挪移')]) 这个也是list,只不过list中装的是tuple,不可以直接用迭代方式可直接用.
    ---------------------------------
    # 解构
    a,b = 1,2
    print(a,b) # 1 2
    (c,d) = 3,4
    print(c,d) # 3 4
    e,f = [1,2,3] # 解构的时候注意数量必须匹配否则报错
    print(e,f)# 报错
    

    3.字典嵌套

    ​ 一层一层看灵活运用即可,融会贯通.

    # 字典的嵌套
    dic = {123:456,True:False,"武林":{"武当":"太极","少林":"罗汉"},"少林":"罗汉","峨眉":"师太","丐帮":['祥龙','伏虎'],(1,2,3):"大挪移"}
    print(dic.get("武林").get("武当")) # 太极
    print(dic.get("丐帮")) # ['祥龙','伏虎']
    print(dic.get("丐帮")[1]) # 伏虎
    

    4.字典总结

    • dict无序的,dict可变的,key不可改变并且唯一,value任意
    • dict可以进行增,删,改,查等操作
    • 存储大量数据,比列表存储量更大
    • 查找值得时候更加方便,快速
    • 能够将数据进行并联
    • 字典比较消耗内存
  • 相关阅读:
    c++继承与多态
    逻辑运算符
    页面分栏布局
    js中的三大特殊数据:undefined,null,NaN
    逻辑分支中if小括号中的隐式转换
    最小高度的兼容方法
    js数据类型的转换
    ognl.OgnlException: target is null for setProperty(null, "goodsSize", [Ljava.lang.String;@c3bb5。
    解决拦截器的对于参数传递无效问题
    引用外部js乱码问题
  • 原文地址:https://www.cnblogs.com/chenshuo531702820/p/10998088.html
Copyright © 2020-2023  润新知