文章目录

  • Python内置函数/方法详解—字典dict
    • 1、创建字典
      • 1.1 字典键的特性
    • 2、访问字典值
      • 2.1 直接访问
      • 2.2 for循环遍历
      • 2.3 检查键是否存在
      • 2.4 嵌套字典
    • 3、内置函数
      • 3.1 打印输出 print()
      • 3.2 确定字典项目 len()
      • 3.3 返回变量类型 type()
      • 3.4 删除字典 del
      • 3.5 转换成字符串 str()
    • 4、内置方法
      • 4.1 删除 pop()、popitem()、clear()、del函数
      • 4.2 复制更新 copy()、update()
      • 4.3 返回指定键值 fromkeys()
      • 4.4 取值 get()、setdefault()
      • 4.5 取键/值 items()、keys()、values()
    • 5、总结

Python内置函数/方法详解—字典dict

字典是一个无序可变有索引的集合。在 Python 中,字典用花括号编写,拥有

1、创建字典

在Python中,我们可以使用 {} 或者 dict() 函数来创建字典。

1、使用 {}

  • 使用大括号 {} 创建空字典
empty_dict = {}
  • 字典的每个键值 key: value 用冒号 : 分割,且每个对之间用逗号 , 分割,整个字典包括在花括号 {} 中,格式如下:
d = {key1: value1, key2: value2, key3: value3}

注意:dict 作为Python的关键字和内置函数,变量名不建议命名为 dict

2、使用dict()

  • 使用 dict() 创建空字典
empty_dict = dict()
  • 使用 dict() 创建非空字典
notEmpty_dict = dict(name='xm', gender=True, age=21)

在使用 dict() 创建字典时,在小括号 () 内要以 key=value 的形式编写。

1.1 字典键的特性

1、不允许同一个键出现两次。创建时如果同一个键被赋值两次,则后一个值会被记住,如下实例:

repeat_dict = {'name': 'xm', 'gender': True, 'name': 'pink'}
print(repeat_dict)  # {'name': 'pink', 'gender': True}

2、键必须不可变,所以可以用数字、字符串或元组充当,而用列表就不行,如下实例:

error_dict = {['name']: 'pink', 'age': 21}
print(error_dict)

当字典的键使用列表时,会报错TypeError: unhashable type: 'list'

2、访问字典值

2.1 直接访问

如果想要访问某一个键所对应的值,直接将相应的键放入到 [] 内,如下实例:

not_dict = {'name': 'xm', 'gender': True, 'age': 21, 178: 65}
print(not_dict['name'])
print(not_dict[178])

2.2 for循环遍历

循环遍历字典时,返回值是字典的键,但也有返回值的方法。

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
  • 逐个打印字典中的所有键名
for key in info_dict:print(key)
  • 逐个打印字典中的所有
for key in info_dict:print(info_dict[key])
  • 通过使用 value() 方法返回字典的
for key in info_dict.values():print(key)
  • 通过使用 items() 方法遍历键和值
for key, value in info_dict.items():print(key, value)

2.3 检查键是否存在

要确定字典中是否存在指定的键,使用 in 关键字:

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
print('name' in info_dict)

如果字典中存在指定的键,则返回 True ,反之返回 False

2.4 嵌套字典

字典也可以包含许多字典,这被称为嵌套字典

  • 创建包含三个字典的字典
my_family = {'child1': {'name': 'Phoebe Adele','birth': 2002},'child2': {'name': 'Jennifer Katharine','birth': 1996},'child3': {'name': 'Rory John','birth': 1999}
}

或者,如果你想嵌套三个已经作为字典存在的字典。

  • 创建三个字典,然后创建一个包含其他三个字典的字典
child1 = {'name': 'Phoebe Adele','birth': 2002
}
child2 = {'name': 'Jennifer Katharine','birth': 1996
}
child3 = {'name': 'Rory John','birth': 1999
}
my_family = {'child1': child1,'child2': child2,'child3': child3
}

3、内置函数

3.1 打印输出 print()

1、print()函数

print() 函数的功能我们已经非常熟悉了,就是打印输出。

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
print(info_dict)

输出:

{'name': 'xm', 'gender': True, 'age': 21}

3.2 确定字典项目 len()

2、len()函数

当我们要确定一个字典有多少项目(键值对),可以使用 len() 函数。

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
print(len(info_dict))

输出结果:

3

使用 len() 函数返回的结果,意为有多少个键值对(即多少个 key: value)。

3.3 返回变量类型 type()

3、type()函数

使用 type() 函数可以确定一个变量是什么类型(字符串、列表、元组、字典或集合)。

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
print(type(info_dict))

输出结果:

<class 'dict'>
  1. 当对 info_dict = {key: value} 使用 type() 返回变量类型时,会输出 <class 'dict'> ,表明这是一个字典
  2. 当对 info_set = {key, key} 使用 type() 返回变量类型时,会输出 <class 'set'> ,表明这是一个集合

3.4 删除字典 del

4、del函数

del 关键字的作用是完全删除字典(和下述要说的清空字典并不一样)

info_dict = {'name': 'xm', 'gender': True, 'age': 21}
del info_dict
print(info_dict)

注意: 当我们使用 del 删除某字典后,再使用 print() 函数打印输出时,会报一个错误 NameError: name 'info_dict' is not defined ,意为该字典并未被创建,注意和清空字典相区分。

3.5 转换成字符串 str()

5、str()函数

str() 的作用就是将一个字典转换成字符串,以便后续的操作。

info_dict = {'name': 'xm'}
info_str = str(info_dict)
print(type(info_str))  # <class 'str'>

如果我们对上述转换后的字符串打印输出的话。会返回 {'name': 'xm'} ,但此时这只是一个字符串并不存在键值对

4、内置方法

4.1 删除 pop()、popitem()、clear()、del函数

1、pop()方法

pop() 方法从字典中删除指定的项目,被删除的项目的值是这个 pop() 方法的返回值。

语法

dictionary.pop(key, default)

参数值

参数 描述
key 必需。需要删除项目的键名。
default 可选。返回值,假如指定的键不存在。如果未指定此参数,且未找到拥有指定键的项目,则会引发错误。

实例

info = {'name': 'pink', 'gender:': True, 'age': 21}
print(info)
  • 如果 key 存在 - 删除字典中对应的元素
info.pop('name')
print(info)
{'gender:': True, 'age': 21}
  • 如果 key 不存在 - 返回设置指定的默认值 default
error = info.pop('nickname', 'key不存在')
print(error)
key不存在
  • 如果 key 不存在且默认值 default 没有指定 - 触发 KeyError 异常:KeyError: 'nickname'

2、popitem()方法

popitem() 方法随机返回并删除字典中的最后一对键和值。如果字典已经为空,却调用了此方法,就报出 KeyError 异常。

语法

dictionary.popitem()

参数值

无参数

实例

info = {'name': 'pink', 'gender:': True, 'age': 21}
print(info)
info.popitem()
print(info)
{'name': 'pink', 'gender:': True, 'age': 21}
{'name': 'pink', 'gender:': True}

3、clear()方法

clear() 方法用于删除字典内所有元素。

语法

dictionary.clear()

参数值

无参数

实例

info = {'name': 'pink'}
info.clear()
print(info)
{}

4、del函数

del 函数可用于删除某一特定的键值对。

info = {'name': 'pink', 'gender': True}
print(info)
del info['name']
print(info)
{'name': 'pink', 'gender': True}
{'gender': True}

5、clear()方法和del函数区别

clear() 方法:清空字典(即删除字典内所有键值对),执行结束后,使用 print() 打印时,输出 {} ,说明字典还存在,只是一个空字典

del 函数:删除字典(即删除所有键值对以及字典),执行结束后,使用 print() 打印时,会报错 NameError: name 'info' is not defined ,表明该字典未被定义,即已不存在字典。

4.2 复制更新 copy()、update()

1、copy()方法

copy() 方法返回一个字典的浅复制。

语法

dictionary.copy()

参数值

无参数

实例

info = {'name': 'pink', 'gender': True}
co = info.copy()
print(co)
{'name': 'pink', 'gender': True}

2、update()方法

update() 方法把字典参数 dict2 的 key/value(键/值) 对更新到字典 dict 里。

语法

dictionary.update(iterable)

参数值

参数 描述
iterable 具有键值对的字典或可迭代对象,会被插入到字典中。

实例

info_1 = {'name': 'pink'}
info_2 = {'age': 21}
info_1.update(info_2)
print(info_1)
{'name': 'pink', 'age': 21}

3、直接更新

可以通过引用键名来更改特定项的值:

info = {'name': 'xm'}
  • 若引用的键存在于原字典中,则会修改原键对应的值
info['name'] = 'pink'
print(info)
{'name': 'pink'}
  • 若引用的键不存在于原字典中,则会直接添加到原字典中
info['gender'] = True
print(info)
{'name': 'xm', 'gender': True}

4.3 返回指定键值 fromkeys()

fromkeys() 方法用于创建一个新字典,以序列 keys 中元素做字典的键,value 为字典所有键对应的初始值。

语法

dict.fromkeys(keys, value)

参数值

参数 描述
keys 必需。指定新字典键的可迭代对象。
value 可选。所有键的值。默认值是 None。

实例

  • value 不指定值
keys = {'A', 'B'}
this_dict = dict.fromkeys(keys)
print(this_dict)
{'A': None, 'B': None}
  • value 指定值
keys = {'A', 'B'}
this_dict = dict.fromkeys(keys, 10)
print(this_dict)
{'A': 10, 'B': 10}

4.4 取值 get()、setdefault()

1、get()方法

get() 方法返回具有指定键的项目值。

语法

dictionary.get(keyname, value)

参数值

参数 描述
keyname 必需。您要从中返回值的项目的键名。
value 可选。如果指定的键不存在,则返回一个值。默认值 None。

实例

  • get() 用法
info = {'name': 'pink', 'age': 21}
print(info.get('age'))# 没有设置 Sex,也没有设置默认的值,输出 None
print(info.get('sex'))# 没有设置 Salary,输出默认的值  0.0
print(info.get('salary', 0.0))
21
None
0.0
  • get() 方法 VS dict[key] 访问元素区别

get(key) 方法在 key(键)不在字典中时,可以返回默认值 None 或者设置的默认值。

dict[key] 在 key(键)不在字典中时,会触发 KeyError 异常。

  • 嵌套字典使用
my_csdn = {'My_CSDN': {'url': 'https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343'}}
res = my_csdn.get('My_CSDN', {}).get('url')
print(str(res))
https://blog.csdn.net/m0_70885101?spm=1000.2115.3001.5343

2、setfefault()方法

setdefault() 方法和 get() 方法类似, 如果键不存在于字典中,将会添加键并将值设为默认值。

语法

dictionary.setdefault(keyname, value)

参数值

参数 描述
keyname 必需。您要从中返回值的项目的键名。
value 可选。如果键存在,则此参数无效。如果键不存在,则此值将成为键的值。默认值 None。

实例

info = {'name': 'pink', 'age': 21}
print(info.setdefault('age', None))
print(info.setdefault('sex', '男'))
print(info)
21
男
{'name': 'pink', 'age': 21, 'sex': '男'}

4.5 取键/值 items()、keys()、values()

1、items()方法

items() 方法以列表返回视图对象,是一个可遍历的 key/value 键值对。

语法

dictionary.items()

参数值

无参数

实例

info = {'name': 'pink', 'age': 21}
print(info.items())
dict_items([('name', 'pink'), ('age', 21)])

当字典中的项目值发生改变时,视图对象也会更新。

2、keys()方法

keys() 方法返回一个视图对象。

语法

dictionary.keys()

参数值

无参数

实例

info = {'name': 'pink', 'age': 21}
print(info.keys())
dict_keys(['name', 'age'])

当在字典中添加项目时,视图对象也会更新。

3、values()方法

values() 方法返回一个视图对象。

语法

dictionary.values()

参数值

无参数

实例

info = {'name': 'pink', 'age': 21}
print(info.values())
dict_values(['pink', 21])

当字典中的值改变时,视图对象也会更新.

4、items()keys()values 联系

dict.keys()dict.values()dict.items() 返回的都是视图对象( view objects),提供了字典实体的动态视图,这就意味着字典改变,视图也会跟着变化。

视图对象不是列表,不支持索引,可以使用 list() 来转换为列表。

我们不能对视图对象进行任何的修改,因为字典的视图对象都是只读的。

5、总结

函数 描述
print() 打印输出
len() 计算字典键值对
type() 返回变量类型
del 删除字典
str() 以可打印的字符串表示
方法 描述
pop(key[,default]) 删除字典 key(键)所对应的值,返回被删除的值
popitem() 返回并删除字典中的最后一对键和值
clear() 删除字典内所有元素
copy() 返回一个字典的浅复制
update(dict2) 将字典dict2的键/值对更新到dict里
fromkeys() 创建一个新字典,以序列seq中元素做字典的键,val为所有键对应的初始值
get(key, default=None) 返回指定键的值,如果键不在字典中返回 default 设置的默认值
setdefault(key, default=None) 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
items() 返回包含每个键值对的元组的列表
keys() 返回包含字典键的列表
values() 返回字典中所有值的列表

以上就是本文的全部内容啦!如果对您有帮助,麻烦点赞啦!收藏啦!欢迎各位评论区留言!!!

最后编辑于:2022/7/24 18:19

Python 字典dict详解(超详细)相关推荐

  1. Python字典(dict)详解

    文章目录: 一.字典(dict)的概念: 二.字典(dict)的定义: 1.一般格式: 2.空字典: 3.举例: 注意: 三.字典(dict)的一些基本操作: 1.增: 2.删: 3.查: 4.改: ...

  2. 技巧 | Python 字典用法详解(超全)

    文章目录 1.dict.clear() 2.dict.copy() 3.dict.fromkeys() 4.dict.get() 5.dict.items() 6.dict.keys() 7.dict ...

  3. python哪个代码是正确的字典_Python - 字典(dict) 详解 及 代码

    字典(dict) 详解 及 代码 本文地址: http://blog.csdn.net/caroline_wendy/article/details/17291329 字典(dict)是表示映射的数据 ...

  4. Java 泛型详解(超详细的java泛型方法解析)

    Java 泛型详解(超详细的java泛型方法解析) 1. 什么是泛型 泛型:是一种把明确类型的工作推迟到创建对象或者调用方法的时候才去明确的特殊的类型.也就是说在泛型使用过程中,操作的数据类型被指定为 ...

  5. Python学习基础必备知识点:字典dict详解

    取键值 1.Python 字典 setdefault() 方法和 get() 方法类似,返回指定键的值,如果键不在字典中,将会添加键并将值设置为一个指定值,默认为None. get() 和 setde ...

  6. Python中字典(dict)详解

    python字典:   一个映射对象将可散列的值映射到任意对象.映射类型是可变的对象.当前只有一种标准的映射类型,即字典.用作键值的数字类型遵循正常的数值比较规则:如果两个数是相等的(例如1和1.0) ...

  7. Python 字典用法详解(超全)

    字典(Dictionary)是Python提供的一种常用的数据结构,它用于存放具有映射关系的数据.本期给大家带来Python字典11个方法的全面解析,希望对你有所帮助. 字典由键(key)和值(val ...

  8. Python装饰器详解,详细介绍它的应用场景

    装饰器的应用场景 附加功能 数据的清理或添加: 函数参数类型验证 @require_ints 类似请求前拦截 数据格式转换 将函数返回字典改为 JSON/YAML 类似响应后篡改 为函数提供额外的数据 ...

  9. Python 字典Dictionary详解

    字典是另一种可变容器模型,且可存储任意类型对象. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: d = ...

最新文章

  1. pta简单实现x的n次方_PTA-2017实验2.4 函数
  2. ADSL获取的IP地址与网关相同,却能上网的原理
  3. JVM性能调优监控工具总结
  4. OpenCASCADE:扩展数据交换(XDE)的简介
  5. json 和 table控件
  6. 在虚拟机中的Ubuntu搭建java开发环境
  7. [POJ3177]Redundant Paths
  8. ASP.NET 英语词典
  9. 中国计算机信息网络国际联网管理暂行规定,中华人民共和国计算机信息网络国际联网管理暂行规定...
  10. ERP系统操作难吗?
  11. Linux内核内存压缩技术
  12. 群晖用php装aria2,群晖Synology安装Aria2实现迅雷离线下载,安装IPKG
  13. fastlane二开java_Fastlane 使用手册(二)
  14. 计算机服务器组装,一台家用虚拟化测试服务器组装
  15. 设计制作了一套easyui皮肤组件
  16. 2020-12-01 剖析 Linux hypervisor
  17. 系统思考:VUCA时代下的我们应该怎么做?
  18. 看完就懂——MySQL索引、事务与存储引擎
  19. 重力场和稳态海洋环流探测器(GOCE)
  20. 推动线下网吧转型 京东Game+ CEST总决赛圆满落幕

热门文章

  1. saltstack(自动化运维工具)——介绍、安装、部署+远程执行
  2. mongod自定义主键
  3. 从零开始,如何系统的学习项目管理?
  4. vSAN架构细节(2) - 对象和组件
  5. Python中关于反斜杠(\)用法的总结
  6. 在Jetson Xavier NX上运行openpose
  7. 【最通俗易懂】C#有限状态机
  8. 软件测试前景和前途如何,这篇文章带你看行业趋势
  9. Android UI 设计规范,挥泪整理面经
  10. 野蛮女友 男人能忍多久