1.字典的简单介绍
字典(dict),是python中惟一的映射类型.他是以{ }括起来的键值对组成.在dict中key是惟一的.在保存的时候,根据key来计算出一个内存地址.而后将key-value保存在这个地址中.这种算法被称为hash算法, 因此, 切记, 在dict中存储的key-value中的key'必须是可hash的,若是你搞不懂什么是可哈希.
已知的可哈希(不可变)的数据类型: int, str, tuple, boolpython
2.语法 : {key1: value1, key2: value2....}git
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
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.字典删除code
# 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来查找具体的数据get
# 经过key值查询 dic = {"武当":"太极","少林":"伏虎","峨眉":"师太"} print(dic['武当']) # 太极 # print(dic['太极']) # 报错 --------------------------------- # 用git + key方法查找 print(dic.get("ok")) # None print(dic.get("武当")) # 太极 print(dic.get("华山", "不存在")) # 不存在
5.字典其余相关操做hash
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)# 报错
一层一层看灵活运用便可,融会贯通.it
# 字典的嵌套 dic = {123:456,True:False,"武林":{"武当":"太极","少林":"罗汉"},"少林":"罗汉","峨眉":"师太","丐帮":['祥龙','伏虎'],(1,2,3):"大挪移"} print(dic.get("武林").get("武当")) # 太极 print(dic.get("丐帮")) # ['祥龙','伏虎'] print(dic.get("丐帮")[1]) # 伏虎