python自学成才之路 字典详细用法
时间:2022-07-23
本文章向大家介绍python自学成才之路 字典详细用法,主要内容包括其使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。
文章目录
字典介绍
字典使用{}表示,内部是一个个键值对,类似于java中的map,但是java中的map有泛型做约束,而python字典则没有。字典的键必须是可hash的,像字符串和整形是可hash,但是如果使用列表或者字典作为键则会报键不能hash异常,如下所示
listtest = ['ds','ds']
userInfo[listtest] = 'sds'
Traceback (most recent call last):
File "D:/pythonbase/dict/dicBase.py", line 19, in <module>
userInfo[listtest] = 'sds'
TypeError: unhashable type: 'list'
字典的键没有强制要求类型必须一致,这在java中是不允许的,但是python中键类型可以不一致,如果在字典中使用不同类型的键,代码不会报错,但是一遍不会这样做,而且不同类型的键在后续操作中容易出问题,所以最好不要使用不同类型的键。
# 不建议使用不同类型的键
userinfo = {}
userinfo[1] = 'hello'
userinfo['2'] = 'world'
print(userinfo)
输出:
{1: 'hello', '2': 'world'}
在字典中使用不同类型的值比较常见,比如定义一个userInfo的字典用来表示用户信息,其中键全是字符串类型,值有字符串类型,也有整形,还有字典类型和列表类型。
userInfo = {}
userInfo['name'] = 'Peter'
userInfo['id'] = 1121021
userInfo['detail'] = {'addr':'new york','age':12,'tel':'21232221021'}
userInfo['friend'] = ['Jane','Bob','Kate']
print(userInfo)
输出:
{'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'}, 'friend': ['Jane', 'Bob', 'Kate']}
在定义一个字典时,可以在定义的时候做初始化,上面的userInfo也可以像下面这样定义:
userInfo = {'name': 'Peter', 'id': 1121021, 'detail': {'addr': 'new york', 'age': 12, 'tel': '21232221021'},
'friend': ['Jane', 'Bob', 'Kate']}
遍历字典
1.遍历字典的键
通过for循环遍历字典时,默认是遍历所有的键
userInfo = {'100':'peter','101':'bob','103':'david','104':'jane','105':'kate','106':'jack'}
for key in userInfo:
print(key)
也可以使用keys()方法遍历所有的键
for key in userInfo.keys():
print(key)
在遍历键时还可以对键做排序操作,但是前提是键的类型都是一致的,否则会报错
for key in sorted(userInfo.keys()):
print(key)
2.遍历字典上的值
通过values()方法来遍历所有的值
for value in userInfo.values():
print(value)
在遍历值得时候也可以对值做排序操作,但是值得类型必须一致,否则会报错
for value in sorted(userInfo.values()):
print(value)
直接遍历值的时候可能会出现很多重复的值,可以使用set来对值做去重处理,前提是值的类型是一致的。
for value in set(userInfo.values()):
print(value)
3.遍历键和值
使用items()方法可以同时遍历键和值
for k,v in userInfo.items():
print('key = ' + k + ', value = ' + v)
字典嵌套
1.字典列表
列表的元素是字典
userInfos = []
userInfos.append({'name':'Peter','age':12})
userInfos.append({'name':'Jack','age':15})
userInfos.append({'name':'Jane','age':14})
userInfos.append({'name':'Mike','age':13})
print(userInfos)
2.字典中嵌套列表和字典
在字典中同时嵌套字典和列表,比如下面用字典来表示用户信息,第一层是字典,字典里面的兴趣爱好又是列表。
userInfo = {
'peter':{
'id':'1234',
'age':12,
'tel':'172313133',
'like':['play guitar','sing','swim']
},
'bob':{
'id':'1235',
'age':14,
'tel':'17232333',
'like':['play basketball','sing','dance']
}
}
print(userInfo)
- Parallel线程安全问题
- 厚土Go学习笔记 | 25. 函数值 函数是函数也是值
- GoStub框架使用指南
- 厚土Go学习笔记 | 24. map字典测试用例(文字出现次数统计)
- .NET Core+MySql+Nginx 容器化部署
- Trie树分析
- 厚土Go学习笔记 | 23. map字典的使用
- JDK动态代理的底层实现原理
- 冷场了吗?我带着phpcms9.6.2 注入来救场了
- 厚土Go学习笔记 | 22. 实现Pic
- ie8和chrome获取上传图片的宽度和高度等尺寸
- 厚土Go学习笔记 | 21. range用法
- Golang Stub初体验
- 厚土Go学习笔记 | 20. slice 继续
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- MySQL limit导致的执行计划差异
- 3分钟短文:用Laravel的方式管理服务器的文件们
- 漫画:什么是 “抽象工厂模式” ?
- 啥?Grafana 还能为日志添加告警?
- Docker映射详解,没问题了!
- 写了很久!详细理解Spring和IoC
- 一位摸金校尉决定转行前端
- CentOS7下搭建并体验HFish开源蜜罐系统
- 唐朝人更懂React
- 唐朝人更懂React
- 一起学习PHP的runkit扩展如何使用
- CentOS7下部署开源网络流量回溯分析系统Moloch
- spring源码(八)
- 通过源码理解rarp协议(基于linux1.2.13)
- 详解Im2Col+Pack+Sgemm策略更好的优化卷积运算