dict--字典
dict 字典
{}表示,每次保存两个数据,key:value,键值对
根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为哈希算法(hush),而hash表是不连续的,因此不能切片,也决定了按照内部的哈希表保存的key-value值是无序的
在dict中存储的key-value中的key都是可哈希的,即不可变的数据类型:
int,str,tuple,bool
通过前边的参数去找后边的类型,后边可以存储任何的数据类型
语法:
dict =
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}} print(dic) print(dic) print(dic[3]) print(dic[Ture]) print(dic['linga']) print(dic[(1,2)]) #使用bool时要注意Ture对应的值为1
1、新增:
语法:
dict[key] = value dict.set
dict.setdefault(key,value)
如果dict中没有出现过这个key-value。可以通过setdefault设置默认,如果dict中已经存在了。那么setdefault将不会起作用
如果key存在,执行的是修改操作,反之执行的是新增
dic = {} dic['jay'] = '周杰伦' dic[1] = '马纳多纳' print(dic) dic.setdefault('LOL') print(dic) dic.setdefault('LOL','Master') print(dic)
2、删除
pop,del,clear,popitem
用法和列表的一样
需要注意的是popitem是随机删除
语法:
dict.pop(key)
dict.clear(key)
del dict(key)
dict.popitem()
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}} dic.pop(3) dic.pop() dic.popitem() print(dic) del dic('allen') print(dic) dic.clear() print(dic)
3、修改
和列表一样
dic = {"id": 123, "name": 'sylar', "age": 18} dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"} dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增. print(dic) print(dic1)
4、查询
查询一般用key来查找具体的数据
语法:
dict[key]
dict.get(key)
使用dict[key]需注意如果key不存在会报错,而使用dict.get(key),key不存在是会返回None
dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}} print(dic[3]) print(dic.get(Ture)) print(dic.get(111)) print(dic[121])
5、其他相关操作
1 for循环:
语法:
for key in dict.keys():
for value in dict.values():
for key,value in dict.items()
需注意的是,keys(),values(),items()相当于字典中key,value,和key:value的列表。
for key,value in dict.items()中: key,value使用了解构,使用结构要注意结构的元素和承接的变量个数要匹配
dic = {1:'马拉多纳',2:'外星人',3:'小罗',4:'内马尔'} for key in dic.keys(): ptint(key) for value in dic.values(): print(value) for key,value in dic.items(): print(key,value) li = [2,3,4,5] a,b,c,d = li print(a,b,c,d)
6、字典的嵌套
有降维的意思,便于识读和操作
用法跟列表的一样
wangfeng = { 'name':'汪峰', 'age':46, 'wife':{ 'name':'章子怡', 'age':43 }, 'children':[ {'name':'小叮当','age':10}, {'name':'大叮当','age':16} ] } #汪峰的第二个儿子的年龄 print(wangfeng.get("children")[1].get("age")) print(wangfeng.get("wife").get("name")) print(wangfeng.get("name")) #我不是有意调戏峰哥的
dic = { 'name':['alex',2,3,5], 'job':'teacher', 'oldboy':{'alex':['python1','python2',100]} } # 1,将name对应的列表追加一个元素’wusir’。 dic['name'].append("wusir") print(dic) # 2,将name对应的列表中的alex首字母大写。 dic['name'][0] = dic['name'][0].capitalize() print(dic) # 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。 dic['oldboy']['老男孩'] = 'linux' print(dic) # 4,将oldboy对应的字典中的alex对应的列表中的python2删除。 dic["oldboy"]['alex'].remove('python2') print(dic)
作者: 咕咚!
出处: https://www.cnblogs.com/linga/
关于作者:专注虚拟化,运维开发,RPA,Rust,Go,Python!
本文版权归作者和博客园共有,禁止*.csdn.net转载,禁止以盈利为目的的转载,转载文章,但未经作者同意必须保留此段声明,且在文章页面明显位置给出, 原文链接 如有问题, 可邮件(oldsixa@163.com)咨询.
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)