前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Python数据容器:字典

Python数据容器:字典

原创
作者头像
Heaven645
修改2024-07-22 15:33:15
1061
修改2024-07-22 15:33:15
举报
文章被收录于专栏:Python学习

前言

在 Python 中,数据容器是组织和管理数据的重要工具,字典作为其中一种基本的数据结构,具有独特的特性和广泛的应用。本章详细介绍了字典的定义、常用操作以及遍历方法。


本篇文章参考:黑马程序员

一、字典的定义

Python中字典和生活中字典十分相像:

  • 生活中的字典可以按【字】找出对应的【含义】
  • Python中的字典:可以按【Key】找出对应的【Value】

①基本语法:

字典使用花括号“{}”,且使用逗号隔开各个元素,存储的元素是一个个键值对,每一个键值对包含Key和Value(用冒号分隔),键值对之间使用逗号分隔。

  • 定义字面量: {key:value,key:value,key:value,……,key:value}
  • 定义变量: 变量名称 = {key:value,key:value,key:value,……,key:value}
  • 定义空字典: 方式一:变量名称 = {} 方式二:变量名称 = dict()

②特点:

  • 可容纳多个数据
  • 每一份数据是key:value键值对
  • Key和Value可以是任意类型的数据(key不可为字典)
  • Key不可重复,重复会对原有数据覆盖
  • 可修改(增加、删除或更新元素等)
  • 支持for循环,不支持while循环
  • 不可以使用下标索引
代码语言:python
代码运行次数:0
复制
# 定义字典
my_dict1={"小明":90,"小美":95,"小空":89,"小散":79}

# 定义空字典
my_dict2={}
my_dict3=dict()
print(f"字典1的内容为{my_dict1},类型为{type(my_dict1)}")
print(f"字典2的内容为{my_dict2},类型为{type(my_dict2)}")
print(f"字典3的内容为{my_dict3},类型为{type(my_dict3)}")

输出结果: 字典1的内容为{'小明': 90, '小美': 95, '小空': 89, '小散': 79},类型为<class 'dict'> 字典2的内容为{},类型为<class 'dict'> 字典3的内容为{},类型为<class 'dict'>

代码语言:python
代码运行次数:0
复制
# Key不可重复,重复会对原有数据覆盖
my_dict={"小明":90,"小明":79,"小美":95,"小空":89}
print(f"重复key的字典的内容为{my_dict},类型为{type(my_dict)}")

输出结果: 重复key的字典的内容为{'小明': 79, '小美': 95, '小空': 89},类型为<class 'dict'>

Python的字典是基于哈希表(hash table)实现的。字典中的每个键都通过一个哈希函数计算出一个哈希值,这个哈希值决定了键在内存中的存储位置。由于哈希值的计算和存储顺序不是固定的,因此字典的键是无序的。在Python 3.6及以后的版本中,插入字典的顺序会被保留,但无序的特性仍然是其基本性质,因此字典不支持下标索引,我们通常使用键访问字典中的值

代码语言:python
代码运行次数:0
复制
# 从字典中基于key取得value
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
score=my_dict["小明"]
print(f"小明的考试成绩为{score}")

输出结果: 小明的考试成绩为90

字典的嵌套:

代码语言:python
代码运行次数:0
复制
# 字典的嵌套
stu_score_dict={
    "小明":{
        "语文":77,
        "数学":89,
        "英语":65
    },"小美":{
        "语文":89,
        "数学":78,
        "英语":98
    },"小空":{
        "语文":58,
        "数学":97,
        "英语":86
    }
}
print(f"学生成绩信息为{stu_score_dict}")

# 从嵌套的字典中获取数据
score=stu_score_dict["小明"]["语文"]
print(f"小明的语文成绩为{score}")

输出结果: 学生成绩信息为{'小明': {'语文': 77, '数学': 89, '英语': 65}, '小美': {'语文': 89, '数学': 78, '英语': 98}, '小空': {'语文': 58, '数学': 97, '英语': 86}} 小明的语文成绩为77

二、字典的常用操作(方法)

字典的常用方法:

①添加元素:

语法:字典Key = Value

代码语言:python
代码运行次数:0
复制
# 添加新元素
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
my_dict["小离"]=100
print(f"字典新增元素后,结果为{my_dict}")

输出结果: 字典新增元素后,结果为{'小明': 90, '小美': 95, '小空': 89, '小散': 79, '小离': 100}

②更新元素:

语法:字典Key = Value

代码语言:python
代码运行次数:0
复制
# 更新元素
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
my_dict["小明"]=33
print(f"字典更新元素后,结果为{my_dict}")

输出结果: 字典更新元素后,结果为{'小明': 33, '小美': 95, '小空': 89, '小散': 79}

③删除元素:

语法:字典.pop(Key)

代码语言:python
代码运行次数:0
复制
#删除元素
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
score=my_dict.pop("小明")
print(f"字典删除一个元素后,结果为{my_dict},小明的成绩为{score}")

输出结果: 字典删除一个元素后,结果为{'小美': 95, '小空': 89, '小散': 79},小明的成绩为90

使用 pop() 方法删除字典中的元素时,它会返回被删除的值。

④清空字典:

语法:字典.clear()

代码语言:python
代码运行次数:0
复制
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
my_dict.clear()
print(f"字典被清空后,结果为{my_dict}")

输出结果: 字典被清空后,结果为{}

⑤获取字典中全部的key:

语法:字典.keys()

代码语言:python
代码运行次数:0
复制
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
keys=my_dict.keys()
print(f"字典的全部key为{keys}")

输出结果: 字典的全部key为dict_keys('小明', '小美', '小空', '小散')

⑥统计字典内的全部元素(键值对)数量:

统计集合内有多少元素,得到一个整数结果。

语法:len(字典)

代码语言:python
代码运行次数:0
复制
my_dict={"小明":90,"小美":95,"小空":89,"小散":79}
num=len(my_dict)
print(f"字典的元素数量:{num}")

输出结果: 字典的元素数量:4

三、字典的遍历

字典不支持下标索引,所以不可使用while循环遍历,但是支持使用for循环遍历。

for循坏遍历:

方式一:

通过获取全部的key来完成遍历

语法:for key in 字典.keys()

代码语言:python
代码运行次数:0
复制
# 方式一:通过获取全部的key来完成遍历
for key1 in my_dict.keys():
     print(f"字典的key:{key1}")
     print(f"字典的value:{my_dict[key1]}")

输出结果: 字典的key:小明 字典的value:90 字典的key:小美 字典的value:95 字典的key:小空 字典的value:89

方式二:

直接对字典进行for循坏,每一次循坏都是直接得到key

代码语言:python
代码运行次数:0
复制
for key2 in my_dict:
    print(f"字典的key:{key2}")
    print(f"字典的value:{my_dict[key2]}")

输出结果:

字典的key:小明

字典的value:90

字典的key:小美

字典的value:95

字典的key:小空

字典的value:89

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 一、字典的定义
  • 二、字典的常用操作(方法)
  • 三、字典的遍历
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档