字典
小知识
join()#拼接符.join(可迭代对象)
字典——dict 无序的,可变的
存储大量数据,字典比列表要快,将数据和数据之间进行关联
定义一个字典
dic = {"长鑫":10,"李卫":80, "张宇":100}#逗号分割是一个元素 键:长鑫 值 :10——键值对
字典的键:
必须是可哈希的——不可变的数据的类型——避免了哈希冲突,使用了开放寻址法
可哈希的——不可变的数据的类型
不可哈希的——可变的数据的类型
要求唯一:如果有重复的,后边的值将前边的值覆盖
字典的值:
可以任意数据类型
字典的增加:
暴力添加:
dic = {"长信":10}
dic["ss"] = 20
setdefault()
dic.setdefault("lwh",100)
#1.拿着键去字典中查询,如果不存在执行添加,如果存在就不添加了
字典的删除:
del #通过字典的键删除键值对
dic = {"长信":10}
del dic["长信"]
pop #通过字典的键删除键值对,有返回值,返回的是被删除的值
dic = {"长信":10,"ccc":1}
dic.pop("长信")
clear# 清空字典
字典的改:
dic={"长信":10,"ss":10}
dic["ss"] = 100#字典中没有键值对是添加,有就修改
update()——括号中的字典级别高于update前边的字典
dic={"长信":10,"ss":10}
dic1={"ss",100,1:"das"}
dic.update({"ss",100,1:"das"})
字典的查:
for—— 循环获取的的是字典中的键
dic={"长信":10,"ss":10}
for i in dic:
print(i)
get()——通过键获取值,如果建不存在字典中,存在放回见对应的值,不存在返回None
dic={"长信":10,"ss":10}
print(dic.get("ss"))
print(dic["ss"])#通过键获取值,如果不存在报错
其他操作:
dic={"长信":10,"ss":10}
for i in dic:
print(i,dic.get(i))
keys()——获取字典中的所有的键,存放在一个高仿列表中
dic = {"changxin":1,"ccc":None}
print(dic.keys())
结果:
dict_keys(['changxin', 'ccc', 'a'])高仿列表——支持for循环不支持索引
values()——获取字典中所有的值,存放在一个高仿列表中
dic = {"changxin":1,"ccc":None}
print(dic.values())
结果
dict_values([1, None])
items()——获取字典中的所有的键值对,以元组形式存放在一个高仿列表中
dic = {"changxin":1,"ccc":None}
print(dic.values())
结果:
dict_items([('changxin', 1), ('ccc', None)])
解构:
a, b= 10,12#本质上是一个元组
print(a)
print(b)
a,b=b,a
print(a)
print(b)
结果:
10
12
12
10
a,b=[1,2]
print(a,b)
a,_,b=(1,2,3)#等号后边的值要与前边一一对应
print(a,b)
结果:
1 2
1 3
a,b="12"
print(a,b)
a,b={1:"12",2:"22"}
print(a,b)
结果:
1 2
1 2
dic = {"changxin": 1, "ccc": None}
for k, v in dic.items():
print(k, v)#循环获取字典的每一个键和值
for i in dic.items():
print(i)
结果:
changxin 1
ccc None
('changxin', 1)
('ccc', None)
字典的嵌套:
查找的时候一层一层的通过键查找
dic = {1001:["周杰伦","林俊杰",],
1002:{"汪峰":{"前妻":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝"}},
1003:{"陈冠希":["阿娇","阿萨","张柏芝"]},
1004:{"韦小宝":[{"教主夫人":"教主"},{"阿珂","刺客"},{"双儿":"天地会"},{"爱新觉罗":"建宁"},]},
1005:{"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖"]}
}