当前位置: 首页 > article >正文

【新人系列】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. 使用 { } 创建字典

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

dictname = {'key': 'value1', 'key2': 'value2', ..., 'keyn': 'valuen'}

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

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

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

dictname = dict.fromkeys(list, value=None)

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

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

格式 1:

dict1 = dict(key1="test1", key2="test2", key3="test3")

格式 2:

demo = [('two',2), ('one',1), ('three',3)]
dict2 = dict(demo)

格式 3:

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

4.2 增删改查

访问字典

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

  1. 访问字典元素
dictname[key]

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

  1. get( ) 方法
dictname.get(key[,default])

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

alien = {'color': 'green'}
print(alien.get('color','0'))      # green
print(alien.get('points','0'))     # 0

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

添加、修改和删除键值对

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) 来查看该类型包含哪些方法。

>>> dir(dict)
['clear', 'copy', 'fromkeys', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values' ]

遍历字典

现在我定义了一个 favorite 字典,我想遍历字典中的值,则有三种方式可以遍历。
favorite = {‘1’: ‘Python’, ‘3’: ‘C++’, ‘2’: ‘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)
  • 遍历所有值
# values()方法用于返回字典中所有键对应的值(value)
for language in favorite.values():
    print(language)
"""
Python
C++
Python
"""

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

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

4.3 字典嵌套

  • 在列表中存储字典
aliens = []
for alien_number in range(30):
    new_alien ={'color': 'green', 'points': 5}
    aliens.append(new_alien)
  • 在字典中存储列表
pizza = {
    'crust': 'thick',
    'toppings': ['mushrooms', 'extra cheese'],
}
  • 在字典中存储字典
users = {
    'aeinstein':{
        'first': 'albert',
        'last': 'einstein',
        'location': 'princeton',
    },
    'mcurie':{
        'first': 'marie',
        'last': 'curie',
        'location': 'paris',
    },
}

http://www.kler.cn/a/390215.html

相关文章:

  • ima.copilot-腾讯智能工作台
  • 【VBA实战】用Excel制作排序算法动画续
  • 微信小程序=》基础=》常见问题=》性能总结
  • 金价大跌,特朗普胜选或成导火索
  • SQL练习(2)
  • JUC-locks锁
  • 深入探讨Vue项目中缺少明显入口文件的原因及解决策略
  • Spring Boot框架:计算机课程与工程认证的桥梁
  • 【宝藏】浏览器端的模块化问题(1)
  • 浅谈Spring MVC
  • middleware中间件概述
  • Django博客网站上线前准备事项
  • 昇思大模型平台打卡体验活动:项目2基于MindSpore通过GPT实现情感分类
  • PHP和Python脚本的性能监测方案
  • 游戏中的设计模式及杂项
  • 【Android】名不符实的Window类
  • NVM 介绍及使用指南
  • 【C++学习笔记】第一个C++程序
  • 如何评估Elasticsearch查询性能的具体指标?
  • 【C++课程学习】:二叉搜索树
  • 前端学习八股资料CSS(一)
  • Golang | Leetcode Golang题解之第546题移除盒子
  • Linux C/C++ Socket 编程
  • 今天给在家介绍一篇基于jsp的旅游网站设计与实现
  • 基于PyQt Python的深度学习图像处理界面开发(一)
  • YOLO即插即用---PConv