Python 字典

简介: 字典推导式利用每次迭代收集表达式的键和值结果,并将该键值对添加到新的字典中。当键存在时, 可以通过类似列表元素赋值的方式, 给字典的键赋值来修改键所对应的值。这三个方法返回类似列表的值, 分别对应字典的键、值和键值对。不同的是,如果键不存在,这个键值对会被添加到字典中。如果数据存储在字典中,可以通过字典的键来指定占位符替换的值。在删除时应给出需要删除的键,如果只给出字典变量本身,则会删除整个字典变量。字典最主要的用法是查找与特定键相对应的值, 可通过索引符号来实现。字典有多种特定的方法,如下表所示,其中。

✅作者简介:人工智能专业本科在读,喜欢计算机与编程,写博客记录自己的学习历程。
🍎个人主页:小嗷犬的博客
🍊个人信条:为天地立心,为生民立命,为往圣继绝学,为万世开太平。

🥭本文内容:Python 字典

@[TOC]


1.字典及基本操作

在 Python 中, 字典通过特定的键(key),查找对应的值(value)。键和值之间是一一对应的映射关系。字典是 Python 中唯一内置的、核心的映射类型。

字典通过一对花括号 {}来 标识。 字典与列表、元组不同, 其每个元素由键和值两个部分构成, 键和值之间用冒号 :隔开。不同键值对使用逗号隔开。

{
    <1>:<1>, <2>:<2>,, <键n>:<值n>}

相对于列表和元组,字典有以下一些属性:

  • 字典是无序的。
  • 字典是可变的。
  • 字典的键必须是不可变类型。
  • 字典的键不能重复。
  • 通过键而不是索引序号来获取值。

    1.1 创建字典

    字典可以通过一对花括号{}或者dict函数来创建。
    dic = {
          'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
    print(dic)
    
    使用dict函数创建字典时,可以将由键值元组构成的序列作为参数。
    dic = dict([('C', '1972'), ('C++', '1979'), 
    ('Java', '1995'), ('Python', '1989')])
    print(dic)
    

1.2 访问字典的值

字典最主要的用法是查找与特定键相对应的值, 可通过索引符号来实现。

<变量> = <字典变量>[<>]
dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic['C'])

通过键来获取值时, 键必须是存在的, 否则将触发KeyError的异常。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic['C#'])

由于字典是无序的,因此不能像列表那样切片。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic['C':'Java'])

1.3 修改字典的值

当键存在时, 可以通过类似列表元素赋值的方式, 给字典的键赋值来修改键所对应的值。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
dic['C'] = '666'
print(dic)

1.4 添加键值对

当键不存在时, 也可以为它赋值, 这样 Python 会自动为该字典添加新的键值对。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
dic['C#'] = '2000'
print(dic)

1.5 删除键值对

通过 Python 的内置函数del可以删除字典中的键值对。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
del dic['C']
print(dic)

在删除时应给出需要删除的键,如果只给出字典变量本身,则会删除整个字典变量。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
del dic
print(dic)

2.字典的常用方法

字典有多种特定的方法,如下表所示,其中dic为字典变量。

函数和方法 描述
dic.keys() 返回所有的键信息
dic.values() 返回所有的值信息
dic.items() 返回所有的键值对
dic.get(k,d) 键存在则返回相应值,否则返回默认值
dic.pop(k[,d]) 键存在则返回相应值,同时删除键值对,否则返回默认值
dic.popitem() 随机从字典中取出一个键值对,以元组(key, value)形式返回
dic.clear() 删除所有的键值对
del dic[key] 删除字典中某一个键值对
key in d 如果键在字典中返回True,否则返回False

2.1 keys()、values() 和 items() 方法

keys()values()items() 这三个方法返回类似列表的值, 分别对应字典的键、值和键值对。返回的数据类型(dict_keysdict_valuesdict_items)是可迭代的。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic.keys())
print(dic.values())
for k, v in dic.items():
    print(f'{k} 于 {v} 年诞生')

2.2 避免键不存在错误的方法 get() 和 setdefault()

在字典中访问不存在的键, 会触发KeyError的异常错误。字典的get()方法可以让我们放心地通过键取值,而不用if语句进行判断。

get(key, default=None)
dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic.get('C', 0))
print(dic.get('C#', 0))

还有一个类似的方法setdefault(),该方法也可以根据键取值。不同的是,如果键不存在,这个键值对会被添加到字典中。

setdefault(key, default=None)
dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic.setdefault('C', 0))
print(dic.setdefault('C#', 0))

字典小实例:
setdefault()方法是一个很好的快捷方式,可以确保一个键存在。下面有一个小程序,计算一个字符串中每个字符出现的次数。

message = '我是小嗷犬,喜欢程序设计,也喜欢嗷嗷嗷。'
count = {
    }
for character in message:
    count.setdefault(character, 0)
    count[character] = count[character] + 1  
print(count)

2.3 pop()、popitem() 和 clear() 方法

字典的pop()方法用于通过键获取值,同时删除键值对。

pop(k[,d])
dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic.pop('C'))
print(dic)

字典的popitem()方法获取的是随机的键值对。

:在Python3.7之后,popitem()返回最后插入的键值对(key, value 形式),按照 LIFO(Last In First Out 后进先出法) 顺序规则,即最末尾的键值对。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
print(dic.popitem('C'))
print(dic)

字典的clear()方法用于清除字典中所有的键值对。

dic = {
    'C':'1972', 'C++':'1979', 'Java':'1995', 'Python':'1989'}
dic.clear()
print(dic)

2.4 字典的格式化字符串

如果数据存储在字典中,可以通过字典的键来指定占位符替换的值。这种方式更加清晰。

dic = {
    'name':'C', 'time':'1972'}
print('{name} 诞生于 {time} 年'.format(**dic))

2.5 字典嵌套

字典的值可以是任意类型。因此,可以在字典的值中嵌套列表、元组或者字典。

dic = {
    'C':{
    'time':'1972'}, 'C++':{
    'time':'1979'}}
print(dic['C']['time'])

2.6 字典推导式

与列表类似,字典也可以使用推导式来生成。字典推导式利用每次迭代收集表达式的键和值结果,并将该键值对添加到新的字典中。语法形式如下:

{
    key_expression : value_expression for expression in iterable}
name = ['C', 'C++', 'Java', 'Python']
time = ['1972', '1979', '1995', '1989']
dic = {
    n : t for n, t in zip(name, time)}
print(dic)

字典推导式也可以加上 if 语句进行数据的过滤。

{
    key_expression : value_expression for expression in iterable if condition}
name = ['C', 'C++', 'Java', 'Python']
time = ['1972', '1979', '1995', '1989']
dic = {
    n : t for n, t in zip(name, time) if int(t) < 1990}
print(dic)

目录
相关文章
|
6月前
|
存储 人工智能 索引
Python数据结构:列表、元组、字典、集合
Python 中的列表、元组、字典和集合是常用数据结构。列表(List)是有序可变集合,支持增删改查操作;元组(Tuple)与列表类似但不可变,适合存储固定数据;字典(Dictionary)以键值对形式存储,无序可变,便于快速查找和修改;集合(Set)为无序不重复集合,支持高效集合运算如并集、交集等。根据需求选择合适的数据结构,可提升代码效率与可读性。
|
8月前
|
JSON 监控 安全
深入理解 Python 的 eval() 函数与空全局字典 {}
`eval()` 函数在 Python 中能将字符串解析为代码并执行,但伴随安全风险,尤其在处理不受信任的输入时。传递空全局字典 {} 可限制其访问内置对象,但仍存隐患。建议通过限制函数和变量、使用沙箱环境、避免复杂表达式、验证输入等提高安全性。更推荐使用 `ast.literal_eval()`、自定义解析器或 JSON 解析等替代方案,以确保代码安全性和可靠性。
264 2
|
10月前
|
XML JSON API
如何使用Python将字典转换为XML
本文介绍了如何使用Python中的`xml.etree.ElementTree`库将字典数据结构转换为XML格式。通过定义递归函数处理字典到XML元素的转换,生成符合标准的XML文档,适用于与旧系统交互或需支持复杂文档结构的场景。示例代码展示了将一个简单字典转换为XML的具体实现过程。
155 1
|
12月前
|
存储 JSON 索引
一文让你彻底搞懂 Python 字典是怎么实现的
一文让你彻底搞懂 Python 字典是怎么实现的
334 13
|
11月前
|
存储 Java Serverless
【Python】字典
【Python】字典
115 1
|
12月前
|
关系型数据库 MySQL 数据库
Python MySQL查询返回字典类型数据的方法
通过使用 `mysql-connector-python`库并选择 `MySQLCursorDict`作为游标类型,您可以轻松地将MySQL查询结果以字典类型返回。这种方式提高了代码的可读性,使得数据操作更加直观和方便。上述步骤和示例代码展示了如何实现这一功能,希望对您的项目开发有所帮助。
333 4
|
12月前
|
存储 数据安全/隐私保护 Python
Python常用数据结构——字典的应用
Python常用数据结构——字典的应用
170 2
|
12月前
|
Python
Python 字典删除下标前两个
Python 字典删除下标前两个
83 1
|
11月前
|
存储 安全 Serverless
Python学习四:流程控制语句(if-else、while、for),高级数据类型(字符串、列表、元组、字典)的操作
这篇文章主要介绍了Python中的流程控制语句(包括if-else、while、for循环)和高级数据类型(字符串、列表、元组、字典)的操作。
174 0
|
11月前
|
存储 自然语言处理 数据库
Python字典操作实现文章敏感词检索
Python字典操作实现文章敏感词检索
204 0

热门文章

最新文章

推荐镜像

更多