- 特点:无序的,索引速度快,key不可变 value多元存放
- 用途主要用于存储大量数据,字典比列表快,将数据与数据之间进行关联
- 定义 {key1:value1,key2:value2}
- 避免哈希冲突 采用开放寻址法
创建:
dic={键:值}
info{
"name":"zhangsan",
"age":"2"
}
1 prson={"name":"zhangsan","age":"2"}
2 person=dict("name":"zhangsan","age":"2")
3 {}.fromkeys(keys)批量生产字典
字典的键 :可哈希的的---不可变数据类型(数字,元组,字符串,布尔)
要求唯一 ---如果键值有重复后边覆盖前边的值
字典的值:可以任意
增
- dic[“键”]=“值”
d={1:none,2:none,3:none}
d['name']="zhangsan"
print(d)
#添加了一个键值对
#这种方法虽然简单,但是当添加的key在原字典里也有的时候,就会覆盖。
- dic.setdefault(“键”,值)
dic = {1: None, 2: None, 3: None, 4: None, 5: None}
dic.setdefault("name","zhangsan")
print(dic)
dic.setdefault("name","lisi")
print(dic)
#即使第二次命名字典中的key,value也还是开始的value,并没有改变,但是 也不会报错。
删
-
d.pop(“键”) #通过字典的键删除键值对
-
d.popitem() #随便删除一个
-
del d[“键”] 同“pop”
-
d.clear() 清空字典
改
dic["键"] = "值" # 字典中没有某个键值对的时候就是添加,当键在字典中存在的时候就是修改
#有则改 无则加
dic1.update(要更新的字典)
print(dic1)
#update括号中的字典级别高于update前面的字典
查
-
dic[“key”] 返回字典里 key 所对应的 value ,没有则报错。
-
dic.get(key,default = None) 返回字典中key 所对应的 value ,不存在返回default的值
-
“key” in dic 存在则返回True,没有则返回False
dic1 = {"1":3,"5":9,"李文虎":100}
for i in dic1: # 循环获取的是字典中每个键
print(i)
素质三连
-
dic.keys() 返回一个包含字典里所有keys的列表
-
dic.values() 返回一个包含字典里所有values的列表
-
dic.items() 返回一个包含所有(键,值)元祖的列表
题
cars = ['鲁A32444','鲁A12333','湘B8989M','黑A49678','黑B46555','沪B25044','冀A11111',"京A01101"]
locals = {'冀':{"A":"石家庄","B":"唐山"},
'黑':{"A":"哈尔滨","B":"齐齐哈尔"},
'鲁':{"A":"济南","B":"青岛"},
'鄂':{"A":"武汉","B":"黄石"},
'湘':{"A":"长沙","B":"株洲"},
}
dic={}
for i in cars: #每次传进一个车牌号 鲁A32444
if i[0] in locals: #locals取的是字典的键 #判断cars[0]车牌号与字典的键做判断 鲁
if i[1]=="A": #取得是'A’的键#在基于判断完车牌号上,在判断'A' A
if locals[i[0]]["A"] not in dic: # 这里的i[0]代指的是第一层字典的键 #取得是鲁A在dic里面索引不到
dic[locals[i[0]]["A"]]=1 #不在dic先创建一个
else:
dic[locals[i[0]]["A"]]+=1 #在就加一
if i[1] == "B": # 在基于判断完车牌号上,在判断'A'
if locals[i[0]]["B"] not in dic:
dic[locals[i[0]]["B"]] = 1 # 不在dic先创建一个
else:
dic[locals[i[0]]["B"]] += 1 # 在就加一
print(dic)
结果为:{'济南': 2, '株洲': 1, '哈尔滨': 1, '齐齐哈尔': 1, '石家庄': 1}