python中字典是几维数据_详解Python字典数据类型
字典的定义
dictionary(字典)是除列表以外 Python之中最灵活的数据类型。
字典同样可以用来存储多个数据,通常用于存储描述一个物体的相关信息。
和列表的区别:列表是有序的对象集合,字典是无序的对象集合。
字典用大括号{}定义,以键值对的方式存储数据,键值对之间使用逗号,分隔,键和值之间使用冒号:分隔。
注意点:键key是索引,值value是数据,键必须是唯一的,值可以取任何数据类型,但键只能使用字符串、数字或元组。
以下是字典的示意图
实例
xiaoming = {"name": "小明",
"age": 18,
"gender": True,
"height": 1.75}
字典常用操作
1、创建字典
最常用的就是直接用 {} 创建一个字典。
还可以用 fromkeys 方法创建字典。 格式
dictname = dict.fromkeys(list,value=None)
其中,list 参数表示字典中所有键的列表,value 参数表示默认值,如果不写,则为空值 None。
knowledge = ['语文', '数学', '英语']
scores = dict.fromkeys(knowledge, 60)
print(scores)
### {'数学': 60, '语文': 60, '英语': 60}
这种创建方式通常用于初始化字典,设置 value 的默认值。
2、字典取值
xiaoming_dict = {"name": "小明"}
print(xiaoming_dict["name"])
#小明
# 在取值的时候,如果指定的key不存在,程序会报错!
print(xiaoming_dict["name123"])
# KeyError: 'name123'
get 方法返回指定键的值,如果值不在字典中返回默认值。
xiaoming_dict = {"name": "小明"}
print(xiaoming_dict.get("name", '不存在'))
# 小明
print(xiaoming_dict.get("age", '不存在'))
# 不存在
3、字典的增加/修改
xiaoming_dict = {"name": "小明"}
# 如果key不存在,会新增键值对
xiaoming_dict["age"] = 18
print(xiaoming_dict["age"])
# 18
# 如果key存在,会修改已经存在的键值对
xiaoming_dict["name"] = "小小明"
print(xiaoming_dict["name"])
# 小小明
4、字典的删除
pop删除字典中指定的键值对。
xiaoming_dict = {"name": "小明"}
xiaoming_dict.pop("name")
print(xiaoming_dict)
# {}
# 在删除指定键值对的时候,如果指定的key不存在,程序会报错!
xiaoming_dict.pop("name123")
# KeyError: 'name123'
popitem() 用来随机删除一个键值对。
a = {'语文': 89, '英语': 90, '生物': 98, '物理': 89, '化学': 83, '数学': 95, }
a.popitem()
print(a)
# {'语文': 89, '英语': 90, '生物': 98, '物理': 89, '化学': 83}
其实,说 popitem() 随机删除字典中的一个键值对是不准确的,虽然字典是一种无序的列表,但键值对在底层也是有存储顺序的。
popitem() 总是弹出底层中的最后一个键值对,这和列表的 pop() 方法类似,都实现了数据结构中“出栈”的操作。
5、统计键值对数量
xiaoming_dict = {"name": "小明",
"age": 18}
print(len(xiaoming_dict))
# 2
6、合并字典
xiaoming_dict = {"name": "小明",
"age": 18}
temp_dict = {"height": 1.75,
"age": 20}
# 注意:如果被合并的字典中包含已经存在的键值对,会覆盖原有的键值对
xiaoming_dict.update(temp_dict)
print(xiaoming_dict)
# {'name': '小明', 'age': 20, 'height': 1.75}
7、清空字典
xiaoming_dict = {"name": "小明",
"age": 18}
xiaoming_dict.clear()
print(xiaoming_dict)
# {}
8、直接赋值和浅复制的区别
dict1 = {'user': 'runoob', 'num': [1, 2, 3]}
# 浅拷贝: 引用对象
dict2 = dict1
# 浅拷贝:深拷贝父对象(一级目录),
# 子对象(二级目录)不拷贝,还是引用
dict3 = dict1.copy()
# 修改 data 数据
dict1['user'] = 'root'
dict1['num'].remove(1)
# 输出结果
print(dict1)
print(dict2)
print(dict3)
#{'user': 'root', 'num': [2, 3]}
#{'user': 'root', 'num': [2, 3]}
#{'user': 'runoob', 'num': [2, 3]}
9、获取字典中特定数据
keys() 方法用于返回字典中的所有键(key) values() 方法用于返回字典中所有键对应的值(value) items() 用于返回字典中所有的键值对(key-value)
scores = {'数学': 95, '语文': 89, '英语': 90}
print(scores.keys())
print(scores.values())
print(scores.items())
# dict_keys(['数学', '语文', '英语'])
# dict_values([95, 89, 90])
# dict_items([('数学', 95), ('语文', 89), ('英语', 90)])
在 Python 3.x 中,它们的返回值并不是我们常见的列表或者元组类型,因为 Python 3.x 不希望用户直接操作这几个方法的返回值。
可以使用 list() 函数,将它们返回的数据转换成列表。
a = {'数学': 95, '语文': 89, '英语': 90}
b = list(a.keys())
print(b)
# ['数学', '语文', '英语']
10、字典的循环遍历
依次从字典中获取所有键值对。
xiaoming_dict = {"name": "小明",
"qq": "123456",
"phone": "10086"}
# 变量k是每一次循环中,获取到的键值对的key
for k in xiaoming_dict:
print("%s-%s" % (k, xiaoming_dict[k]))
# name - 小明
# qq - 123456
# phone - 10086
提示:在实际开发中,由于字典中每一个键值对保存数据的类型是不同的,所以针对字典的循环遍历需求并不是很多。
在我们的实际开发中,字典和列表非常常见的一个应用场景。
我们用一个字典的多个键值对来描述一个物体的所有相关信息,然后把多个字典放在同一个列表中,通过一个循环遍历,在循环体内部针对每个字典执行相同的操作。
card_list = [
{"name": "张三",
"qq": "12345",
"phone": "110"},
{"name": "李四",
"qq": "54321",
"phone": "10086"}
]
for card_info in card_list:
print(card_info)
# {'name': '张三', 'qq': '12345', 'phone': '110'}
# {'name': '李四', 'qq': '54321', 'phone': '10086'}
python中字典是几维数据_详解Python字典数据类型相关推荐
- python中get函数是什么意思_详解python中get函数的用法(附代码)_后端开发
strncmp函数用法详解_后端开发 strncmp函数为字符串比较函数,其函数语法为"int strncmp ( const char * str1, const char * str2, ...
- python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂
一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...
- python中heapq的库是什么_详解Python中heapq模块的用法
详解Python中heapq模块的用法 来源:中文源码网 浏览: 次 日期:2018年9月2日 [下载文档: 详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...
- python中ifelifelse用在什么结构_详解Python if-elif-else知识点
有的时候,一个 if - else - 还不够用.比如,根据年龄的划分:条件1:18岁或以上:adult 条件2:6岁或以上:teenager 条件3:6岁以下:kid Python if-elif- ...
- python中用于循环结构的关键字_详解Python的循环结构知识点
循环结构的应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...
- python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...
__new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...
- python中的get函数什么意思_详解python中get函数的用法(附代码)
描述 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法:dict.get(key, default=None) 参数 key – 字典中要查找 ...
- python中image.open函数怎么用_详解Python中open()函数指定文件打开方式的用法
文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...
- python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...
Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...
最新文章
- docker history显示完整信息_Docker使用
- Java日志框架-Logback手册中文版以及官方配置文档教程
- FreeBSD下安装配置Hadoop集群(四)
- 找了前锤子CTO钱晨加入SLG ,百度终于认了……新的一年第4批CDN牌照公布;亚马逊开设云计算技术培训工作 | 极客头条...
- 2198元买真全面屏手机!网友:笑而不语...
- 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
- 【转】PCDATA和CDATA的区别究竟是什么呢?
- idea整个项目乱码解决办法
- python 定义一个学生类、包含三个属性并打印输出_Python3.x基础学习-类--面向对象...
- 计算经纬度距离工具类
- 从社交网络图的edgelist得到adj
- 丽江,清晨的小巷在哭泣
- [LeetCode]Burst Balloons 爆气球
- php file_get_contents路径问题,file_get_contents与相对路径
- Python之面向对象
- Open Source
- Linux系统rar格式怎么解压,如何在linux下解压缩rar格式的文件压缩包
- 加密算法(DES\RSA\SHA\ELGAMAL)
- 计算机启动一直进pe,win7装完系统后开机自动进入pe界面怎么办
- linux 误删nginx.conf文件恢复
热门文章
- Less的简单介绍、使用、语法
- 游戏平台移植经验(Android)
- 全面UI组件库Telerik——为驱动制造业生产商提升生产效率赋能
- php配置教程ecstore,ecstore小记,ecstore_PHP教程
- KPCB 女皇 2014 年互联网趋势报告新鲜速读
- 企业内容管理(ECM)市场 谁执牛耳?
- 开源无疆|京东云参加2019开源年会,助力开源
- office官方推荐卸载工具--下载路径指引
- 充电c语言,USB电池充电基础
- 【推荐】2021腾讯数字生态大会(共183份,演讲PPT【68份】+白皮书+解决方案+其他资料,980M)