1. 什么是字典
{'name': '汪峰', 'age': 18} '键':'值' 别的语言键值对数据
键: 必须是可哈希(不可变的数据类型),并且是唯一的
值: 任意
可以保存任意类型的数据
字典是无序的
python3.6版本以上,默认定义了顺序,python3.5以下是随机显示
不能进⾏切片⼯作. 它只能通过key来获取dict中的数据
字典是可变的
2. 字典能干什么
- 字典可以存储大量数据,字典比列表还要大
字典在查找值的时候很方便快速
- 字典能够将数据进行关联
- 有明确对应关系的时候推荐使用字典,字典一定要整明白,很重要
目前所学的字典是不能转换的
缺点:
- 字典比较消耗内存 最常用的:字符串 列表 字典
3. 字典怎么用: 增、删、改、查
3.1 增
方法一: 直接增
dic["键"] = "值"
例题:
dic['name'] = '汪峰' dic['age'] = 18 print(dic) 结果: {'name': '汪峰', 'age': 18}
方法二:setdefault() 无则添加,有则不变
- 先去字典查看要添加的键存不存在
- 如果字典中存在就不添加,反之添加
dic.setdefault("键","值")
例题:
s1 = dic.setdefault('王菲') # 输出结果 # {'王菲': None} dic.setdefault('a','aaa') print(dic)
一句话总结
dic["键"] = "值" dic.setdefault("键","值") # 键不存在就添加,存在就不填加.
3.2 删
没有remove
方法一:pop('键') 通过键删除,具有返回值,返回的是被删除的值
pop("键")
方法二: del dic 删除整个字典
del dic
方法三: del dic['键'] 删除指定的键值对
del dic["键"]
方法四: dic.clear() 清空 删除整个字典中的键值对
dic.clear()
一句话总结
pop("键") del dic["键"] dic.clear() 清空
3.3 改
方法一: dic["键"] = "值" 直接改
dic["键"] = "值"
例题:
dic = {'a':'b','b':'c'} dic['b'] = '这是新值' 有则改之无则添加
方法二: update({'键':值,'键':值})
- update后面括号里面的级别高,会被前面的中相同的key对应的值覆盖
- 没有的话会填加
dic.update({"a":1,"b":1})
一句话总结
dic["键"] = "值" dic.update({"a":1,"b":1})
3.4 查
- 字典的查询只能通过键获取值,不能通过值获取键
方法一: get('键','可以自己指定内容') 不存在返回的是None获取值的时候可以指定返回的内容,键不存在的时候不报错
例题:
dic = {"a":1} dic["a"] += 5 # 给键a的值加5 dic.get("a") # 获取a的值 print(dic) ''' 输出结果 {'a': 6} '''
方法二: dic["键"] 获取值的时候可以指定返回的内容,键不存在的时候就报错
例题:
dic = {1:2,"a":"a1"} print(dic["c"]) ''' 输出结果 报错,没有这个键 '''
方法三: dic.setdefault("键")
例题:
dic = {"a":1} b = dic.setdefault('a') print(b) ''' 输出结果 1 '''
一句话总结
dic["键"]
get('键','可以自己指定内容')
dic.setdefault("键")
3.5 其他的方法
for循环-获取字典的键的两种方法
方法一:
for k in dic: print(k,dic[k]) #这里需要在打印的时候获取k的值
例题:
dic = {1:2,"a":"a1"} for i in dic: # for循环字典的时候打印的是字典的键 print(i,dic[i]) ''' 输出结果 1 a '''
方法二:
for k in dic.keys(): print(k) # 这里在打印的时候不要指定
例题:
dic = {1:2,"a":"a1"} for v in dic.keys(): print(v) ''' 输出结果 1 a '''
三种模式:
dic.keys() -- 返回的是一个高仿列表 -- 没有索引
dic.values() -- 返回的是一个高仿列表 -- 没有索引
dic.items() -- 返回的是一个高仿列表,列表里存放的是元组类型元组第一个是键,第二个元素是值
3.6 解构
方法:
a,b = b,a --- 交换的是指向 a,b = 1,2 a,b = (45,6) a,b = [1,4] a,b = {"s":1,"a":1} # 字典拆包后的结果是键赋值给了a和b的变量
例题:
a = 1 b = 2 print("is a",id(a)) print("is b",id(b)) a,b = b,a print("is a",id(a)) print("is b",id(b)) a,_,c = "你好啊" print(a,c) # 结果:你啊 a,b = ("1","2") print(a,b) # 结果:1,2 a,b = ["4","5"] print(a,b) # 结果:4,5 a,b = {"a":1,"b":2,} print(a,b) # 结果a b
3.7 enumerate() 枚举
- 给你要迭代对象,加一个序号 默认是从0开始,可以自己指定
例题:
li = [1,2,3,4,54] for i,k in enumerate(li): # enumerate 第二个参数默认不写就是0 -- 枚举 print(i,k) ''' 输出结果 0 1 1 2 2 3 3 4 4 54 '''
练习题:
题目: 有字典dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111},现需求是显示如下列表: 1 电脑 2 手机 3 耳机 4 老婆 方法一: dic = {"电脑":15000,"手机":8000,"耳机":4000,"老婆":1111} count = 1 for i in dic: print(count,i) count += 1 方法二: for k,v in dic.enumerate(dic): # enumerate默认添加的序号从0开始,正好是索引的那个值 print(k+1,v) ''' 输出结果 1 电脑 2 手机 3 耳机 4 老婆 '''
3.8 字典的嵌套:
查找的字典的嵌套时,按照键去一层一层的查找
例题:
dic = { 101:{1:["周杰伦","林俊杰"],2:{"汪峰":["国际章",{"前妻1":["熊大","熊二"]}, {"前妻2":["葫芦娃","木吒"]}]}}, 102:{1:["李小龙","吴京","李连杰"],2:{"谢霆锋":["张柏芝","王菲"]}, 3:["alex","wusir","大象","奇奇"]}, 103:{1:["郭美美","干爹"],2:{"王宝强":{"马蓉":"宋哲"}}}, 201:{1:["凹凸曼","皮卡丘"],2:{"朱怼怼":{"杨幂":"刘恺威"}}} } 1. 找:葫芦娃 print(dic[101][2]["汪峰"][2]["前妻2"][0]) 2. 找:大象 print(dic[102][3][2]) 3. 找:宋哲 print(dic[103][2]["王宝强"]["马蓉"])
来源:https://www.cnblogs.com/zanao/p/11000892.html