字典的增删查改
Posted hualibokeyuan
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了字典的增删查改相关的知识,希望对你有一定的参考价值。
字典
字典是无序的,不可变数据类型
定义: 用于存储数据,存储大量数据 字典要比列表快,将数据和数据之间进行关联
定义一个字典
dic = "常鑫":10,"李文虎":80,"张宇":90,10:"大黑哥"
字典中逗号分隔是一个元素 "常鑫" (键) : 10 (值) 键值对应
字典的键
- 必须是可哈希的—— 不可变的数据类型(列表不可以)——避免哈希冲突,使用了开放寻址法
2.不可哈希———可变的数据类型
3.要求唯一,如果有重复的后面的将前面的值覆盖
字典的值可以任意
增
(通过键去查)
1.暴力添加
dic = "有":[1,2,3]
dic["李文虎"] = 89 结果:'有': [1, 2, 3], '李文虎': 89
- 李文虎这个键去字典进行查询,如果不存在执行添加,如果存在就不添加了
有:
dic = "有":[1,2,3],"李文虎":89
dic.setdefault("李文虎",100) 结果: dic = "有":[1,2,3],"李文虎":89
没有:
dic = "有":[1,2,3],
dic.setdefault("李文虎",100) 结果:'有': [1, 2, 3], '李文虎': 100
- dic.setdefault()
dic = "有":[1,2,3],"李文虎":89
print(dic.setdefault("李文虎"))
#结果 89
只有两种格式
还有 None
print(dic.setdefault("张宇")
# None
删除
通过字典 的键删除值对
- del dic["键"]
dic = "有":[1,2,3],"李文虎":89
del dic["有"]
print(dic)
#结果 '李文虎': 89
dic.pop("键")
dic = "有":[1,2,3],"李文虎":89 dic.pop("有") print(dic) # 结果 '李文虎': 89
dic.clear
dic = "有":[1,2,3],"李文虎":89
dic.clear()
print(dic)
#
改
当键在字典中存在就是修改(暴力修改)
dic = "有":[1,2,3],"李文虎":89
dic["有"] = "dsb"
print(dic)
# '有': 'dsb', '李文虎': 89
字典中没有某个键时就是添加
dic = "有":[1,2,3],"李文虎":89
dic["无"] = "dsb"
print(dic)
# '有': [1, 2, 3], '李文虎': 89, '无': 'dsb'
dic.update("要更新的字典")
括号里的级别高于 update 前面的字典 更新顾名思义就是将补充的填充到原来上面
D = 'one': 1, 'two': 2
D.update('three': 3, 'four': 4) # 传一个字典
print(D)
D.update([('seven', 7), ('eight', 8)]) # 传一个包含一个或多个元祖的列表
print(D)
#'one': 1, 'two': 2, 'three': 3, 'four': 4
'one': 1, 'two': 2, 'three': 3, 'four': 4, 'seven': 7, 'eight': 8
查
利用 for 循环 (循环获取的每个字典中对应的键)
dic = "有":[1,2,3],"李文虎":89 for i in dic: print(i) # 有 李文虎
dic.get()
dic = "有":[1,2,3],"李文虎":89
print(dic.get("李文虎")) #通过键获取值,存在返回键中对应的值
# 89
dic = "有":[1,2,3],"李文虎":89
print(dic.get("无")) #不存在返回 None
# None
dic.get[]
存在的话和上面的()一样,如果不存在就会报错
其他操作
dic.keys() 获取所有键,存放在高仿列表中,支持 for 循环,不支持索引.
dic = "有":[1,2,3],"李文虎":89
print(dic.keys())
# 结果: dict_keys(['有', '李文虎'])
支持 for 循环
dic = "有":[1,2,3],"李文虎":89
for i in dic.keys():
print(i)
结果:
有
李文虎 类似于输出列表中的元素, 字典也可以
不支持索引 直接报错
dic = "有":[1,2,3],"李文虎":89
print(dic.keys()[0])
结果报错
dic.values() 获取字典中所有的值
dic = "有":[1,2,3],"李文虎":89
print(dic.values())
#dict_values([[1, 2, 3], 89])
dic.items() 获取字典中所有键和值
dic = "有":[1,2,3],"李文虎":89
print(dic.items())
#dict_items([('有', [1, 2, 3]), ('李文虎', 89)])
解构
a,b = 10,12
print(a)
print(b) #相当于一个元组
#
10
12
a = 10
b = 20
a,b = b,a
print(a)
print(b)
#
20
10
列表
a, b = [1,2]
print(a)
print(b)
#
1
2
元组
a, b = (1,2)
print(a)
print(b) #等号前面的值要和等号后面的变量名要一一对应,不能多也不能少
#
1
2
字典
a,b = "1":"a","2":"b"
print(a)
print(b)
#
1
2
dic = "1":"a","2":"b"
for k,v in dic.items():
print(k,v)
#1 a
2 b 循环获取字典中的每一个键和值
字典的嵌套
通过键一步一步查询
dic = 1001:["周杰伦","林俊杰"],
1002:"汪峰":"前妻1":["大烧饼"],"前妻2":["熊大","熊二"],"国际章":"肉丝",
1003:"陈冠希":["阿娇","阿萨","张柏芝"],
1004:"韦小宝":["教主夫人":["教主"],
"阿珂":"刺客",
"双儿":"天地会",
"爱心觉罗建宁":"公主",
"独臂神尼":"韦小宝师父":"兰陵王":"隐身","花木兰":[
"唧唧复唧唧","木兰是战士","爸爸":["花和尚"]]
,
"陈圆圆":"丈母娘","穆建平":"小郡主"],
1005:"常鑫":["大黑哥","大烧饼","吃大煎饼","肉夹馍","自行车","井盖",]
print(dic[1005]["常鑫"][-1])
print(dic[1002]["汪峰"]["前妻2"][-1])
print(dic[1004]["韦小宝"][4]["独臂神尼"]["韦小宝师父"]["兰陵王"])
print(dic[1004]["韦小宝"][4]["独臂神尼"]["花木兰"][2]["爸爸"][0])
#
井盖
熊二
隐身
花和尚
以上是关于字典的增删查改的主要内容,如果未能解决你的问题,请参考以下文章