字典(dict)

字典也可以当做是个容器,在内部可以存放数据。相比较于元组和列表,字典的元素必须是 键值对

注意:在Python3.6+字典就是有序了,之前的字典都是无序。

1. 字典定义

info = {"age":12, "status":True, "name":"11","hobby":['篮球','足球']}# 例如: "age":12 称为一个键值对。
department_dict = {    "IT部门":["11","22"],    "销售部":["张三","刘能","张扬"],    "财务部":["ee"]
}
department_dict = {    "qq":{"id":1,"gender":"男","email":"xx@live.com"},    "xx":{"id":1,"gender":"男","email":"xx@live.com"},    "cc":{"id":1,"gender":"男","email":"xx@live.com"},    "vv":{"id":1,"gender":"男","email":"xx@live.com"},    "ff":{"id":1,"gender":"男","email":"xx@live.com"},    "bb":{"id":1,"gender":"男","email":"xx@live.com"},
...}

注意:字典的键有特殊要求,即:必须可哈希 。 目前为止学到的可哈希的类型:int/bool/str/tuple;不可哈希的类型:list/dict

# 合法
dic = {123: 456, True: 999, "id": 1, "name": 'sylar', "age": 18, "stu": ['帅
哥', '美⼥'], (1, 2, 3): '麻花藤'}
print(dic[123])
print(dic[True])
print(dic['id'])
print(dic['stu'])
print(dic[(1, 2, 3)])
# 不合法
# dic = {[1, 2, 3]: '周杰伦'} # list是不可哈希的. 不能作为key
# dic = {{1: 2}: "哈哈哈"}   # dict是不可哈希的. 不能作为key
# dic = {{1, 2, 3}: '呵呵呵'} # set是不可哈希的, 不能作为key

2 .常见方法

  1. 所有的键

    info = {"age":12, "status":True, "name":"oo","email":"xx@live.com"}
    data = info.keys() # 获取字典的所有的键,返回一个`高仿的`列表,存放的都是字典中的key。
    print(data) # 输出:dict_keys(['age', 'status', 'name', 'email'])
    
    info = {"age":12, "status":True, "name":"33","email":"xx@live.com"}
    for ele in info.keys():print(ele)
    

    注意:在Python2中 字典.keys()直接获取到的是列表,而Python3中返回的是高仿列表,这个高仿的列表可以被循环显示。

  2. 所有的值

    info = {"age":12, "status":True, "name":"rr","email":"xx@live.com"}
    data = info.values()
    print(data) # 输出:dict_values([12, True, 'wupeiqi', 'xx@live.com'])
    
    info = {"age":12, "status":True, "name":"tt","email":"xx@live.com"}
    for val in info.values():print(val) # 输出:dict_values([12, True, 'wupeiqi', 'xx@live.com'])
    

    注意:在Python2中 字典.values()直接获取到的是列表,而Python3中返回的是高仿列表,这个高仿的列表可以被循环显示。

  3. 所有的键值

    info = {"age":12, "status":True, "name":"22","email":"xx@live.com"}
    data = info.items()
    print(data) # 输出 dict_items([('age', 12), ('status', True), ('name', 'wupeiqi'), ('email', 'xx@live.com')])
    
    for item in info.items():print(item) # item是一个元组 (键,值)
    
    for key,value in info.items():print(key,value) # key代表键,value代表值,将兼职从元组中直接拆分出来了。
    
  4. 更新字典键值对

    info = {"age":12, "status":True}
    info.update({"age":14,"name":"yy"}) # info中没有的键直接添加;有的键则更新值print(info) # 输出:{"age":14, "status":True,"name":"武沛齐"}
    
  5. 移除字典的键值对

    info = {"age":12, "status":True,"name":"uu"}
    data = info.pop("age")
    print(info) # {"age":12,"name":"武沛齐"}print(data) # 12
    
  6. 根据键获取值

    info = {"age":12, "status":True,"name":"ii"}
    data = info.get("name",None) # 根据name为键去info字典中获取对应的值,如果不存在则返回None,存在则返回值。
    print(data) # 输出:武沛齐
    

6.3 转换

由于字典的每一个元素是键值对,所以想要转换为字典的必须要有个特定的格式才能转换成功

v = dict([("k1","v1"),("k2","v2")])
print(v) # 输出:{'k2': 'v2', 'k1': 'v1'}
v = dict([ ["k1","v1"], ["k2","v2"] ])
print(v) # 输出:{'k2': 'v2', 'k1': 'v1'}

子元素必须包含两个元素,从而将值对应给字典的键、值。

6.4 其他

  1. 取长度

    info = {"age":12, "status":True,"name":"kk"}
    data = len(info)
    print(data) # 输出:3
    
  2. 索引(键)
    字典不同于元组和列表,字典的索引是,而列表和元组则是 0、1、2等数值

    info = {"age":12, "status":True,"name":"adf"}
    print(info["age"])      # 输出:12
    print(info["name"])        # 输出:adf
    print(info["status"])    # 输出:True
    print(info["xxxx"])       # 报错,通过键为索引去获取之后时,键不存在会报错(以后项目开发时建议使用get方法根据键去获取值)
    

    提示:字典根据键的查找速度非常快,远远大于列表或元组通过索引查找的速度,因为字典内部是基于hash存储。

  3. 根据键 修改值 和 添加值 和 删除键值对
    上述示例通过键可以找到字典中的值,通过键也可以对字典进行添加和更新操作

    info = {"age":12, "status":True,"name":"ds"}
    info["gender"] = "男" # gender键在字典中不存在,则自动在字典中新添加一个键值对
    print(info) # 输出: {"age":12, "status":True,"name":"ds","gender":"男"}
    
    info = {"age":12, "status":True,"name":"ee"}
    info["age"] = "18" # age键在info字典中已存在,则更新键对应的值
    print(info) # 输出: {"age":18, "status":True,"name":"ee"}
    
    info = {"age":12, "status":True,"name":"tt"}
    del info["age"] # 删除info字典中键为age的那个键值对(键不存在则报错)
    print(info) # 输出: {"status":True,"name":"tt"}
    
  4. for循环

    由于字典也属于是容器,内部可以包含多个键值对,可以通过循环对其中的:键、值、键值进行循环;

    info = {"age":12, "status":True,"name":"yy"}
    for item in info.key():     print(item)
    
    info = {"age":12, "status":True,"name":"ii"}
    for item in info.values():    print(item)
    
    info = {"age":12, "status":True,"name":"uuu"}
    for key,value in info.items():    print(key,value)
    
  5. 字典嵌套

    截止目前位置我们已学了:int/str/list/tuple/dict 五种常见数据类型,而其中list/tuple/dict类型中可以包含子元素,所以他们的内容就可以进行数据的嵌套。但在嵌套和对内部数据操作时要注意:

    元组子元素不能变
    
    不可哈希的list、dict不能做字典的键
    
     dic = {'name':'汪峰','age':48,'wife':[{'name':'国际章','age':38}],'children':['第一个熊孩子','第二个熊孩子']}"""1. 获取汪峰的妻子名字d1 = dic['wife'][0]['name']print(d1)2. 获取汪峰的孩子们d2 = dic['children']print(d2)3. 获取汪峰的第一个孩子d3 = dic['children'][0]print(d3)4. 汪峰的媳妇姓名变更为 章子怡dic['wife'][0]['name] = "章子怡"print(dic)5. 汪峰再娶一任妻子dic['wife'].append({"name":"铁锤","age":19})print(dic)6. 给汪峰添加一个爱好:吹牛逼dic['hobby'] = "吹牛逼"print(dic)7. 删除汪峰的年龄del dic['age']或dic.pop('age')_print(dic)"""
    

09.python常用数据类型—字典相关推荐

  1. 【Python】Python常用数据类型的基本操作(长文系列第①篇)

    长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python ...

  2. 牛逼!Python常用数据类型的基本操作(长文系列第①篇)

    长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python,希望可以帮你温习一下:如果你想入门Python ...

  3. 牛逼!Python常用数据类型的基本操作(长文系列第一篇)

    我是你们的教授,关注我,带你玩转Python! 长文预警!Python基础系列会将基础内容大致分为三到五个板块,每篇文章着重讲一方面,知识不会很难,主要是以小例子的形式解读,如果你已经入门Python ...

  4. Python常用数据类型

    常用数据类型 python 中常用数据类型共有 int/bool/str/list/tuple/dict/set 六种.可以通过 type()来查看变量的数据类型 print(type(变量)) 整型 ...

  5. 第二周Python笔记 数据类型 字典

    字典key-value的删除.def(dict['key']) ;  dict.pop("key") 查询value:dict.get("key") 查询所有k ...

  6. 07.python常用数据类型—列表(很重要)

    文章目录 列表(list) 1.列表的定义 2 .常用方法(功能) 3. 转换为列表 4. 其他 5. 嵌套 列表(list) 可以把列表当做是一个有序的容器,在里面可以放很多的元素. 1.列表的定义 ...

  7. 列举python中常用的数据类型_列举Python常用数据类型并尽量多的写出其中的方法...

    #1 把字符串的第一个字符大写 string.capitalize() #2 返回一个原字符串居中,并使用空格填充至长度 width 的新字符串 string.center(width) #3 返回 ...

  8. python变量类型之间转换_Python常用数据类型之间的转换总结

    函数 描述 int(x [,base]) 将x转换为一个整数 long(x [,base] ) 将x转换为一个长整数 float(x) 将x转换到一个浮点数 complex(real [,imag]) ...

  9. python基础数据类型之列表,元组(基础二)

    第四章 python基础数据类型之列表,元组(基础二) python常用数据类型之组合数据类型:列表,元组. 4.1 列表 list 列表介绍 列表是python的基础数据类型之⼀ ,其他编程语⾔言也 ...

最新文章

  1. 了解CSS/CSS3原生变量var (转)
  2. File Operations In Java
  3. AI 领域新突破,腾讯发布首个AI药物研发平台「云深智药」
  4. Logback中使用TurboFilter实现日志级别等内容的动态修改
  5. vue[源码]你不知道的observe!
  6. NLP-基础知识-006(机器学习)
  7. MappedByteBuffer VS FileChannel 孰强孰弱?
  8. IPv4地址分类及特征
  9. GOOGLE 分布式系统关键技术论文分析
  10. jQuery弹出窗口完整代码
  11. 碎片︱R语言与深度学习
  12. c3p0,dbcp与druid 三大连接池的区别[转]
  13. 语言纸对折的厚度编写代码_分享几款由“Python”语言编写的“有趣、恶搞、好玩”的程序代码...
  14. 31.Altera PLL ip核的调用
  15. p51 thinkpad 拆解_ThinkPad P51值得买吗?联想ThinkPad P51移动工作站图解评测
  16. ext.js解决html乱码,extjs 中文乱码
  17. smartupload实现文件上传
  18. 关于Dr.Com3.73多人上网的破解(一)
  19. 数组中除一个元素外其他所有元素出现二或三次,找到只出现一次的元素
  20. openwrt 添加usb网卡_树莓派安装OpenWrt教程

热门文章

  1. css3 简单的动画实现欢乐愉快的小鱼
  2. OpenCV之光流法运动目标跟踪
  3. PSRAM 伪静态随机存取内存
  4. 怎么查快递单号,查询物流状态未签收单号
  5. 《论韩愈 》——陈寅恪
  6. python编程输入名字配对情侣网名_翻译:《实用的Python编程》01_05_Lists
  7. lenb和len的区别
  8. VCS+verdi /dve 仿真环境搭建-问题汇总
  9. appdesigner与simulink交互
  10. 使用HTML标记语言画出表格,HTML标记语言——表格标记