【新人系列】Python 入门(九):数据结构 - 中

✍ 个人博客:https://blog.csdn.net/Newin2020?type=blog

📝 专栏地址:https://blog.csdn.net/newin2020/category_12801353.html

📣 专栏定位:为 0 基础刚入门 Python 的小伙伴提供详细的讲解,也欢迎大佬们一起交流~

📚 专栏简介:在这个专栏,我将带着大家从 0 开始入门 Python 的学习。在这个 Python 的新人系列专栏下,将会总结 Python 入门基础的一些知识点,方便大家快速入门学习~

❤️ 如果有收获的话,欢迎点赞 👍 收藏 📁 关注,您的支持就是我创作的最大动力 💪

4. dict 字典

4.1 字典定义

Python 字典(dict)是 Python 中唯一的映射类型,是一种无序的、可变的序列,它的元素以 "键值对(key-value)" 的形式存储。

字典中将各元素对应的索引称为键(key),各个键对应的元素称为值(value),键及其关联的值称为 "键值对"。

创建字典

  1. 使用 { } 创建字典

使用 { } 创建字典的语法格式如下:

python 复制代码
dictname = {'key': 'value1', 'key2': 'value2', ..., 'keyn': 'valuen'}

由于字典中每个元素都包含两部分,分别是键(key)和值(value)。因此在创建字典时,键和值之间使用冒号 : 分隔,相邻元素之间使用逗号 , 分隔,所有元素放在大括号 { } 中。

python 复制代码
alien_0 = {'color': 'green','points': 5}
print(alien_0['color'])    # green
  1. 通过 fromkeys( ) 方法创建字典

Python 中,还可以使用 dict 字典类型提供的 fromkeys( ) 方法创建带有默认值的字典,具体格式为:

python 复制代码
dictname = dict.fromkeys(list, value=None)

其中,list 参数表示字典中所有键的列表(list);value 参数表示默认值,如果不写,则为空值 None。

python 复制代码
knowledge = ['语文', '数学', '英语']
scores = dict.fromkeys(knowledge)
print(scores)   # {'语文': None, '数学': None, '英语': None}
scores = dict.fromkeys(knowledge, 90)
print(scores)   # {'语文': 90, '数学': 90, '英语': 90}
  1. 通过 dict( ) 映射函数创建字典

格式 1:

python 复制代码
dict1 = dict(key1="test1", key2="test2", key3="test3")

格式 2:

python 复制代码
demo = [('two',2), ('one',1), ('three',3)]
dict2 = dict(demo)

格式 3:

python 复制代码
keys = ['one', 'two', 'three']    # 还可以是数值或元组
values = [1, 2, 3]    # 还可以是字符串或元组
dict3 = dict(zip(keys, values))

4.2 增删改查

访问字典

列表和元组是通过下标来访问元素的,而字典不同,它通过键来访问对应的值。

  1. 访问字典元素
python 复制代码
dictname[key]

其中,dictname 表示字典变量的名字,key 表示键名。注意,键必须是存在的,否则会抛出异常。

  1. get( ) 方法
python 复制代码
dictname.get(key[,default])

其中,dictname 表示字典变量的名字;key 表示指定的键,是必不可少的;default 用于指定要查询的键不存在时,此方法返回的默认值,如果不手动指定,就会返回 None,因此是可选的。

python 复制代码
alien = {'color': 'green'}
print(alien.get('color','0'))      # green
print(alien.get('points','0'))     # 0

Tips:

判断字典是否包含指定键值对的键,可以使用 in 或 not in 运算符。

添加、修改和删除键值对

python 复制代码
alien = {'color': 'green','points': 5}

#添加键值对
alien['x_position'] = 0
alien['y_position'] = 25

#修改键值对
alien['color'] = 'yellow'

#删除键值对
del alien['points']
print(alien_0)    # {'color': 'yellow', 'x_position': 0, 'y_position': 25}

查看 dict 所有方法

Python 字典的数据类型为 dict,我们可使用 dir(dict) 来查看该类型包含哪些方法。

shell 复制代码
>>> dir(dict)
['clear', 'copy', 'fromkeys', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values' ]

遍历字典

现在我定义了一个 favorite 字典,我想遍历字典中的值,则有三种方式可以遍历。

favorite = {'1': 'Python', '3': 'C++', '2': 'Python'}

  • 遍历所有键
python 复制代码
# keys()方法用于返回字典中的所有键(key)
for name in favorite.keys():
    print(name)

# 也可以不用keys,会默认遍历所有key
for name in favorite:
    print(name)
此外,可以通过 sorted( ) 来获得特定顺序排列的键列表的副本:
for name in sorted(favorite.keys()):
    print(name)
  • 遍历所有值
python 复制代码
# values()方法用于返回字典中所有键对应的值(value)
for language in favorite.values():
    print(language)
"""
Python
C++
Python
"""

此外,通过对包含重复元素的列表调用 set( ) ,可让 Python 找出列表中独一无二的元素。

python 复制代码
for language in set(favorite.values()):
    print(language)
"""
Python
C++
"""
  • 遍历所有键值对
python 复制代码
# items()用于返回字典中所有的键值对(key-value)
for k, v in favorite.items():
    print("key:", k, " value:", v)

4.3 字典嵌套

  • 在列表中存储字典
python 复制代码
aliens = []
for alien_number in range(30):
    new_alien ={'color': 'green', 'points': 5}
    aliens.append(new_alien)
  • 在字典中存储列表
python 复制代码
pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
}
  • 在字典中存储字典
python 复制代码
users = {
    'aeinstein':{
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie':{
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    },
}
相关推荐
web安全工具库4 分钟前
Python 列表元素的访问、出现次数统计及成员资格判断
python
湫ccc6 分钟前
《Python基础》之列表推导式(列表生成式)
开发语言·python
代码小鑫7 分钟前
A046-基于SpringBoot的论坛系统的设计与实现
java·开发语言·数据库·spring boot·毕业设计
左甜甜8 分钟前
ABAP 面向对象开发
开发语言·sap·abap·alv
禾乃儿_xiuer10 分钟前
《用Python画蔡徐坤:艺术与编程的结合》
开发语言·python·信息可视化·表白·代码·美术·简单代码
冉佳驹15 分钟前
数据结构 ——— 快速排序算法的实现(前后指针法版本)
c语言·数据结构·算法·排序算法·快速排序算法
兑生29 分钟前
力扣面试150 填充每个节点的下一个右侧节点指针 II BFS 逐层构建法
leetcode·面试·宽度优先
坚硬果壳_34 分钟前
《硬件架构的艺术》笔记(七):处理字节顺序
笔记·硬件架构
凡人的AI工具箱1 小时前
40分钟学 Go 语言高并发:【实战】并发安全的配置管理器(功能扩展)
开发语言·后端·安全·架构·golang
我的运维人生1 小时前
Spring Boot应用开发实战:构建RESTful API服务
spring boot·后端·restful·运维开发·技术共享