字典是python中唯一的一个映射类型。他是以{}括起来的键值对组成。在dict中,key是唯一的。在保存的时候,根据key来计算出一个内存地址,然后将key-value保存在这个地址中。这种算法叫做hash算法。所以,dict中存储的key必须是可hash的,可以改变的都是不可哈希的。
可哈希(不可变)的数据类型:int,str,tuple,bool
不可哈希(可变)的数据类型:list,dict,set
语法:{key1:value1,key2:value2......}
2.字典的相关操作:增删改查
增:
dic = {“昆凌”:“周杰伦的老婆”}
dic['国际章'] = “汪峰的老婆” #新增,而这种形式,,如果字典中已经有了key,会替换掉原来的数据。
dic.setdefault("马蓉",“王宝强的老婆”) #如果字典中已经包含了这个key,不再继续保存。
删:
dic.pop(“key”)#返回的是value, 删除一个元素,返回这个元素的value值
del dic["key"]
dic.popitem()#随机删,返回的是元组
dic.clear()#清空字典中所有内容
改:
用key去修改
dict[存在的key] = 新值
d1.update(d2) #把d2的K-v更新到d1中
查:
dic["key"]
dic.get("key") #get后面可以跟一个默认参数,如果查询的key值有,就返回相对应的value;如果查询的key值没有,就返回默认的参数。
setdefault #前提是字典里没有相同的key,如果没有相同的key,则新增;如果有相同的key,则不新增
字典的相关操作:
1. dic.keys() #拿到所有的key,返回key的集合。像是列表,但不是列表,可以使用下列操作遍历出数据。
for el in dic.keys():
print(el)
2. dic.values() #拿到所有的value值
3.dic.items() #拿到键值对
for item in dic.items():
print(item) #得到的结果是元组 (“key”,"value")
print(item[0]) # 得到的结果是key
print(item[1]) # 得到的结果是value
4 解包: a, b = 1, 2
print(a) # a=1
print(b) # b = 2
5
dic = {“及时雨”:“宋江”,“易大师”:“剑圣”,“维恩”,“暗影猎手”}
print(dic.items()) #拿到键值对,dict_items([('及时雨',‘宋江’),(“维恩”,“暗影猎手”),(“易大师”,“剑圣”)])
for item in dic.items():
print(item) #('及时雨',‘宋江’)
(“维恩”,“暗影猎手”)
(“易大师”,“剑圣”)
等价于:
for k,v in dic.items():
print(k,v) #及时雨,宋江
易大师,剑圣
维恩,暗影猎手
6.字典的嵌套
dic = {
“name”:“汪峰”,
“age”:“58”,
“wife”:{
"name":"国际章",
"salary":"180000",
"age":"37"
}
“children”:[
{"name":"老大",“age”:28},
{"name":"老二",“age”:18}
]
}
print(dic["children"][1]["age"]) #汪峰老二孩子的年龄
print(dic["wife"]["salary"]) #汪峰老婆的工资
7.字典的for循环
dic = {1:‘a’,2:"b",3:'c'}
for el in dic: #直接循环字典,拿到的是key
print(el) #拿到的是key
print(dic[el])#拿到的是value