字典是一种key-value的数据类型,字典里必须写Key和value,字典的优点是取数方便和速度快。
字典的特性:
1.字典是无序的,因为它没有下标,用key来当索引,所以是无序的
2.字典的key必须是唯一的,因为它是通过key来进行索引的,所以key不能重复,天生就去重
一、创建字典,字典的定义使用大括号{ },每个值用“,”隔开,key和value使用“:”分隔。
dict = {'name':'张凯','sex':'男','address':'火星','age':'180'}
二、字典的增删改查
2.1 新增
dict['phone']=17700000000 #增加一对key,value,如果key存在的话,会修改原来key对应的value值 dict.setdefault('name','xiao') #如果key存在的话,并不会修改key对应value的值,只能新增
2.2 删除
dict.pop('name') #指定key来删除 dict.popitem() #随机删除一个key del dict['phone'] #指定key来删除 dict.clear() #清空字典
2.3 修改
dir ={'a':'b'} dict.update(dir) #合并字典,把dir字典的元素加入都dict字典中,更新字典值,如果key存在的话,就更新value,不存在就添加 dict['name']='xiao' #如果key存在的话,会修改原来key对应的value值
2.4 查询
print(dict.get('name')) #取不到key的话,会返回None print(dict.get('yy','小黑')) #如果取不到这个key的话,默认就是小黑 print(dict['yy']) #如果key不存在,会报错
2.4.1 字典的内置方法
print(dict.keys())#获取字典所有的key print(dict.values())#获取到字典所有的value print(dict.items())#获取字典所有的key 和value print(dict.update(new_infos))#更新字典值,如果key存在的话,就更新,不存在的话就添加
print(dict.items()) #输出一个list格式(非真正意义上的list) #打印结果: dict_items([('name', '张凯'), ('sex', '男'), ('address', '火星'), ('age', '180')]) print(list(dict.items())) #把字典的key 和 value 转成一个多维list #打印结果: [('name', '张凯'), ('age', '180'), ('address', '火星'), ('sex', '男')]
实例如下:
people = { 'ff':{ 'age':18, 'money':100, 'clothes':'10套' 'hzp''n多', 'shose':['nike','addise','lv','chanle'] }, 'rr':{ '金库':'100W', 'house':['三环','四环'], 'cars':{ 'japan':['普拉多','兰德酷路泽'], 'usa':['林肯','凯迪拉克','福特'], 'china':['五菱宏光','qq','红旗'] } } } print(people['rr']['cars']['china'][1]) #取值QQ print(people['ff']['age']) #取值age a= people['ff']['shose']=('牧马人') #在ff的shose里增加牧马人 b = people['ff']['shose'].append('牧马人2') print(people['ff']['shose'])
三、循环字典
直接循环一个字典的话,那么循环的是字典的key
for p in people: print(p)
循环的时候,同时取key和value
for k,v in people.items(): #循环的时候,同时取key和value print(k,'===>',v)
字典里面用in来判断的话,只是判断key是否存在
users ={ 'niuhanyang':'123456', 'xiaohei':'654321' } print('123456' in users) #字典里面用in来判断的话,只是判断key是否存在 #打印结果:False
四、字典的排序
d ={'a':4,'b':2,'c':3} #字典是无序的,直接对字典排序是不存在的 print(d.items()) #结果是一个二维数组 res = sorted(d.items(),key=lambda x:x[1]) #sorted排序是根据key来排序 print(res) for k,v in res: print(k,v)
五、修改字典的key
方法:先删除原键值对,保存值,然后以新键插入字典
格式:dict[nwekey]=dict.pop(key)
dic = {'id':1, 'xingming':"张三"} dic['name'] = dic.pop('xingming') print(dic) #输出:{'id': 1, 'name': '张三'}
执行语句:dict.pop('xingming')是删除 'xingming'所对应的键值对,返回 'xingming'对应的值;d['b'],相当于给字典新添加一个key,其value为d.pop('xingming')返回的值。
dic = {'id':1, 'xingming':"张三"} value=dic.pop('xingming') print(value) #输出:张三
5.1 循环删除字典里的键值对
lis = [{'id':1, 'name':"张三"},{'id':2, 'name':"张三"}] for key,Indic in enumerate(lis): for k in list(Indic.keys()): if k=='id': Indic.pop('id') print(lis) #输出:[{'name': '张三'}, {'name': '张三'}]
六、字典小练习
for i in range(3): username = input('账号:').strip() passwd =input('密码:').strip() cpasswd =input('再次输入密码').strip() if username == '' or passwd == '': print('用户名密码不能为空') elif username in users: print('用户名已经被注册!') elif passwd != cpasswd: print('两次密码不一致') else: print('恭喜注册成功!') users.setdefault(username,passwd) #users[username]=passwd break else: print('错误次数过多') print(users)
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构