字典的定义

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字典数据类型相关推荐

  1. python中get函数是什么意思_详解python中get函数的用法(附代码)_后端开发

    strncmp函数用法详解_后端开发 strncmp函数为字符串比较函数,其函数语法为"int strncmp ( const char * str1, const char * str2, ...

  2. python中groupby()函数讲解与示例_详解python中groupby函数通俗易懂

    一.groupby 能做什么? python中groupby函数主要的作用是进行数据的分组以及分组后地组内运算! 对于数据的分组和分组运算主要是指groupby函数的应用,具体函数的规则如下: df[ ...

  3. python中heapq的库是什么_详解Python中heapq模块的用法

    详解Python中heapq模块的用法 来源:中文源码网    浏览: 次    日期:2018年9月2日 [下载文档:  详解Python中heapq模块的用法.txt ] (友情提示:右键点上行t ...

  4. python中ifelifelse用在什么结构_详解Python if-elif-else知识点

    有的时候,一个 if - else - 还不够用.比如,根据年龄的划分:条件1:18岁或以上:adult 条件2:6岁或以上:teenager 条件3:6岁以下:kid Python if-elif- ...

  5. python中用于循环结构的关键字_详解Python的循环结构知识点

    循环结构的应用场景 如果在程序中我们需要重复的执行某条或某些指令,例如用程序控制机器人踢足球,如果机器人持球而且还没有进入射门范围,那么我们就要一直发出让机器人向球门方向奔跑的指令.当然你可能已经注意 ...

  6. python中__init__后面加特殊符号_详解Python中的__new__、__init__、__call__三个特殊方法...

    __new__: 对象的创建,是一个静态方法,第一个参数是cls.(想想也是,不可能是self,对象还没创建,哪来的self) __init__ : 对象的初始化, 是一个实例方法,第一个参数是sel ...

  7. python中的get函数什么意思_详解python中get函数的用法(附代码)

    描述 Python 字典 get() 函数返回指定键的值,如果值不在字典中返回默认值. 语法 get()方法语法:dict.get(key, default=None) 参数 key – 字典中要查找 ...

  8. python中image.open函数怎么用_详解Python中open()函数指定文件打开方式的用法

    文件打开方式 当我们用open()函数去打开文件的时候,有好几种打开的模式. 'r'->只读 'w'->只写,文件已存在则清空,不存在则创建. 'a'->追加,写到文件末尾 'b'- ...

  9. python函数中可变参数的传递方式是_详解Python函数可变参数定义及其参数传递方式...

    Python函数可变参数定义及其参数传递方式详解 python中 函数不定参数的定义形式如下 1. func(*args) 传入的参数为以元组形式存在args中,如: def func(*args): ...

最新文章

  1. docker history显示完整信息_Docker使用
  2. Java日志框架-Logback手册中文版以及官方配置文档教程
  3. FreeBSD下安装配置Hadoop集群(四)
  4. 找了前锤子CTO钱晨加入SLG ,百度终于认了……新的一年第4批CDN牌照公布;亚马逊开设云计算技术培训工作 | 极客头条...
  5. 2198元买真全面屏手机!网友:笑而不语...
  6. 简单51单片机c语言编程流水灯,51单片机如何实现流水灯?51单片机实现流水灯的三种方法详细分析...
  7. 【转】PCDATA和CDATA的区别究竟是什么呢?
  8. idea整个项目乱码解决办法
  9. python 定义一个学生类、包含三个属性并打印输出_Python3.x基础学习-类--面向对象...
  10. 计算经纬度距离工具类
  11. 从社交网络图的edgelist得到adj
  12. 丽江,清晨的小巷在哭泣
  13. [LeetCode]Burst Balloons 爆气球
  14. php file_get_contents路径问题,file_get_contents与相对路径
  15. Python之面向对象
  16. Open Source
  17. Linux系统rar格式怎么解压,如何在linux下解压缩rar格式的文件压缩包
  18. 加密算法(DES\RSA\SHA\ELGAMAL)
  19. 计算机启动一直进pe,win7装完系统后开机自动进入pe界面怎么办
  20. linux 误删nginx.conf文件恢复

热门文章

  1. Less的简单介绍、使用、语法
  2. 游戏平台移植经验(Android)
  3. 全面UI组件库Telerik——为驱动制造业生产商提升生产效率赋能
  4. php配置教程ecstore,ecstore小记,ecstore_PHP教程
  5. KPCB 女皇 2014 年互联网趋势报告新鲜速读
  6. 企业内容管理(ECM)市场 谁执牛耳?
  7. 开源无疆|京东云参加2019开源年会,助力开源
  8. office官方推荐卸载工具--下载路径指引
  9. 充电c语言,USB电池充电基础
  10. 【推荐】2021腾讯数字生态大会(共183份,演讲PPT【68份】+白皮书+解决方案+其他资料,980M)