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

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录

  • 一、字典简介
    • 1.1 创建字典
    • 1.2 访问字典中的值
    • 1.3 添加键值对
    • 1.4 修改字典中的值
      • 实例
    • 1.5 删除键值对
    • 1.6 由多个类似对象组成的字典
    • 1.7 使用get()访问值
    • 1.8 练习题
  • 二、遍历字典
    • 2.1 遍历所有键值对
      • 实例
    • 2.2 遍历字典中的所有键
    • 2.3 按照特定顺序遍历字典中的所有键
    • 2.4 遍历字典中的所有值
      • 如何对输出值进行去重
      • 集合
    • 2.5 练习题
      • 代码
      • 输出
  • 三、字典和列表的嵌套使用
    • 3.1 在列表中存储字典
      • 将字典手动输入列表
      • 自动生成多人的字典并添加进列表
    • 3.2 在字典中存储列表
      • 输出字典中各个列表的长度
      • 练习
    • 3.3 在字典中存储字典
  • 四、练习题

一、字典简介

字典由花括号{ }中的一系列键值对表示

1.1 创建字典

使用一对空花括号来定义一个字典,再分别添加各个键值对。

alien = {}
alien['color'] = 'green'
alien['points'] = 5
print(alien)

在这里插入图片描述

1.2 访问字典中的值

字典中的元素由键值对组成,要获取与键相关联的值,可依次指定字典名和放在方括号内的键。

alien_0 = {'color':'green','points':5}
print(alien_0['color'])
print(alien_0['points'])

在这里插入图片描述
字典中可包含任意数量的键值对。

1.3 添加键值对

字典是一种动态结构,可以随时在其中添加键值对。如要添加键值对,可依次指定字典名、用方括号括起的键和相关联的值。

alien_0 = {'color':'green','points':5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)

在这里插入图片描述

1.4 修改字典中的值

想要修改字典中的值,可以依次指定字典名,用方括号括起来的键,以及与该键相关联的新值。

alien_0 = {'color':'green','points':5}
print(alien_0['color'])
alien_0['color'] = 'yellow'
print(alien_0['color'])

在这里插入图片描述

实例

对一个能够以不同速度移动的外星人进行位置跟踪,设置外星人的移动速度有‘快、慢、中等’3个速度,快速一次向右移动3m,慢速一次向右移动1m,中等速度一次向右移动2m,现在外星人的位置为(0,25),机器人以不同的速度移动后的位置分别为多少?

alien = {'name':'alen','color':'red','x_position':0,'y_position':25,'speed':'medium'}
position = (alien['x_position'],alien['y_position'])
print(f"The position is {position}")
if alien['speed'] == 'fast':x = 3
elif alien['speed'] == 'medium':x = 2
elif alien['speed'] == 'slow':x = 1
alien['x_position'] += x
new_position = (alien['x_position'],alien['y_position'])
print(f"The new position with the speed of {alien['speed']} is {new_position}")

代码中设置的是速度为medium时的位置坐标。
在这里插入图片描述
修改字典中speed键对应的值,可以得到不同速度的位置。
在这里插入图片描述

1.5 删除键值对

使用del语句删除不需要的键值对

alien = {'name':'alen','color':'red','x_position':0,'y_position':25,'speed':'fast'}
print(alien)
del alien['name']
print(alien)

在这里插入图片描述

1.6 由多个类似对象组成的字典

在前面的例子中,字典存储的是一个对象(alien)的多个属性,也可以用字典存储诸多对象的同种信息,如使用一个字典存储每个人最喜欢的编程语言。

favorite_lauguague = {'ken':'python','jack':'c++','will':'java','mary':'ruby'
}
print(f"Will's favorite lauguague is {favorite_lauguague['will'].title()}")

在定义长字典时可以使用上面所示的多行定义。

1.7 使用get()访问值

  • get(键,指定键不存在时返回的值)

该函数可以处理当想要查询的键不存在时的异常情况。

favorite_languague = {'ken':'python','jack':'c++','will':'java','mary':'ruby'
}
print(favorite_languague)
languague = favorite_languague.get('diane','ERROR!No Such People Named Diane!')
print(languague)
favorite_languague['diane'] = 'c'
languague = favorite_languague.get('diane','ERROR!No Such People Named Diane!')
print(favorite_languague)
print(languague)

上述代码中:

  • 使用get查询不存在的键时(diane不存在),会返回get方法中定义的发生异常时的字符串;
  • 使用get查询存在的键时(为diane键赋对应的值为c),会返回该键对应的值。

1.8 练习题

在这里插入图片描述

print('6-1')
people = {'first_name':'winnie','last_name':'ma','age':22,'city':'zibo'
}
print(people)print('6-2')
favorate_numbers={'will':5,'jack':10,'diane':6,'peter':51,'mary':8
}

二、遍历字典

2.1 遍历所有键值对

使用for循环items方法遍历所有键值对。

for key, value in dictionary.items( )

  • 在for循环中声明两个变量key、value来代表键和值,可以使用任意变量名(如k、v等)。
  • items方法返回一个键值对列表,返回的值赋给两个变量。
user_0 = {'username' : 'jack','age' : 20,'city' : 'los angeles'
}
for key,value in user_0.items():print(key,value)

在这里插入图片描述

实例

打印每个人最喜欢的语言是什么,此处使用的2个变量名即与变量对应,分别为name和language.

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
for name,lauguage in favorite_languages.items():print(f"{name.title()}'s favorate language is {lauguage.title()}.")

2.2 遍历字典中的所有键

keys( ) : 返回一个列表,该列表包含该字典中所有的键。

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
for name in favorite_languages.keys():print(name.title())

在这里插入图片描述
keys()方法不仅可用来遍历,还可以用来判断键是否包含在字典中。

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}if 'will' not in favorite_languages.keys():print('Will, please enter your name!')

2.3 按照特定顺序遍历字典中的所有键

使用sorted方法对键进行排序:sorted ( dictionary.keys( ) )

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python',}
for name in sorted(favorite_languages.keys()):print(f"{name.title()}, thank you!")

可以看到输出的名字都根据字母进行了排序。

在这里插入图片描述

2.4 遍历字典中的所有值

values( )方法返回一个值列表。

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python','will' : 'python'}
for lauguage in sorted(favorite_languages.values()):print(lauguage)

在这里插入图片描述
可以看到该方法输出的值中有重复项Python,想要去掉重复项则可使用set方法去重。

如何对输出值进行去重

set( ):集合,集合中的每个元素都是唯一的。

favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'python','will' : 'python'}
for lauguage in set(favorite_languages.values()):print(lauguage)

在这里插入图片描述
可以看到去掉了Python重复项。

集合

集合和字典一样都使用花括号进行定义。当花括号内没有键值对时,定义的很可能就是集合。

lauguages = {'python','python','c'}
print(lauguages)

可以看到定义的集合中有重复元素,而集合输出会自动去重。

在这里插入图片描述

2.5 练习题

在这里插入图片描述

代码

print('6-5')
rivers_countrys = {'nile':'egypt','changjiang':'china','amazon':'brazil'
}
for river,country in rivers_countrys.items():print(f"The {river.title()} runs through {country.title()}.")print('6-6')
favorite_languages = {'jen': 'python','sarah': 'c','edward': 'ruby','phil': 'java','will' : 'python'}
names = ['will','jen','peter','ken']
for name in names:if name in favorite_languages.keys():print(f"Dear {name.title()}, thank you!")else:print(f'Dear {name.title()}, please joy our party.')

输出

在这里插入图片描述

三、字典和列表的嵌套使用

3.1 在列表中存储字典

加入我们需要一个多人名单,每个人都需要包含其姓名、年龄、性别的信息,那么如何统筹管理这些多人信息呢?

答案是创建一个users列表,其中每个user都是一个字典,包含该user的各种信息。

将字典手动输入列表

user_1 = {'name':'will','age':40,'gender':'male'}
user_2 = {'name':'diane','age':37,'gender':'female'}
user_3 = {'name':'cary','age':25,'gender':'male'}users = [user_1,user_2,user_3]for user in users:print(user)

在这里插入图片描述

自动生成多人的字典并添加进列表

若需要生成更多人的信息,则可以先创建一个users空列表,然后使用range方法生成需要的user数目。

users = []
for number in range(30):new_user = {'name':'will','age':40,'gender':'male'}users.append(new_user)#显示前5个
for user in users[:5]:print(user)

使用range(30)自动生成30个user字典,然后依次使用append方法添加进users列表中。

下图显示输出前users列表中的前五个user字典。

在这里插入图片描述

3.2 在字典中存储列表

假如想要建立人们所掌握的编程语言的字典,每个人可能掌握多种编程语言,所以就需要一个键对应多个值,此时可以在字典中嵌套列表。

people_lauguages = {'will' : ['python','c'],'peter' : ['c++','java'],'ken' : ['ruby','c++','go']
}
for people,lauguages in people_lauguages.items():print(f"{people.title()} can master:",end=" ")for lauguage in lauguages:print(lauguage.title(),end=" ")else:print("\n")

在这里插入图片描述

输出字典中各个列表的长度

使用values方法来获取字典中的列表,然后使用len方法统计列表长度。

people_lauguages = {'will' : ['python','c'],'peter' : ['c++','java'],'diane' : ['python'],'ken' : ['ruby','c++','go'],'cary' : ['c']
}for lauguages in people_lauguages.values():print(len(lauguages))

在这里插入图片描述

练习

假如需要进一步对人们掌握的语言个数进行判断,若只能掌握一种语言,则输出“你需要继续加油学习”语句。

people_lauguages = {'will' : ['python','c'],'peter' : ['c++','java'],'diane' : ['python'],'ken' : ['ruby','c++','go'],'cary' : ['c']
}
for people,lauguages in people_lauguages.items():if len(lauguages) == 1:print(f"{people.title()}, you need to learn more lauguages!",end=" ")elif len(lauguages) >=2:print(f"{people.title()}, you already master",end=" ")for lauguage in lauguages:print(lauguage,end=" ")else:print("error!")print("\n")

在这里插入图片描述

3.3 在字典中存储字典

字典中嵌套了相同结构的字典。

users = {'mary' : {'age':21,'gender':'female'},'will' : {'age':40,'gender':'male'}
}for name, name_info in users.items():print(f"{name}")for age,gender in name_info.items():print(age,gender)

在这里插入图片描述

四、练习题

在这里插入图片描述
在这里插入图片描述
6-7

#6-7
people_1 = {'first_name':'winnie','last_name':'ma','age':22,'city':'zibo'
}
people_2 = {'first_name':'will','last_name':'zhao','age':40,'city':'qingdao'
}
people_3 = {'first_name':'mary','last_name':'wang','age':20,'city':'jinan'
}
people = [people_3,people_2,people_1]for p in people:for k,v in p.items():print(k,v)

在这里插入图片描述
6-8
在这里插入图片描述

6-9

#6-9
favorate_place = {'peter' : ['america'],'cary' : ['china','brazil','italy'],'diane' : ['india','france']
}
for name,places in favorate_place.items():if len(places) == 1:print(f"{name.title()}'s avorate place is {places[0].title()}!")elif len(places)>=2:print(f"{name.title()}'s favorate places are",end=" ")i=1for place in places:if i<=len(places)-1:print(f"{place.title()}",end=" and ")i+=1else:print(f"{place.title()}",end="!\n")else:print("error")

在这里插入图片描述

6-11

#6-11
cities = {'zibo':{'country':'china','num_people':9000,'food':'barbecue'},'jinan':{'country':'china','num_people':500,'food':'meet'},'qingdao':{'country':'china','num_people':6300,'food':'sea food'}
}
for city,city_info in cities.items():print(f"{city.title()}")for k,v in city_info.items():print(k,v)

在这里插入图片描述

相关文章:

Python小白学习:超级详细的字典介绍(字典的定义、存储、修改、遍历元素和嵌套)

目录 一、字典简介1.1 创建字典1.2 访问字典中的值1.3 添加键值对1.4 修改字典中的值实例 1.5 删除键值对1.6 由多个类似对象组成的字典1.7 使用get()访问值1.8 练习题 二、遍历字典2.1 遍历所有键值对实例 2.2 遍历字典中的所有键2.3 按照特定顺序遍历字典中的所有键2.4 遍历字…...

word转pdf两种方式(免费+收费)

一、免费方式 优点&#xff1a;1、免费&#xff1b;2、在众多免费中挑选出的转换效果相对较好&#xff0c;并且不用像openOffice那样安装服务 缺点&#xff1a;1、对字体支持没有很好&#xff0c;需要安装字体库或者使用宋体&#xff08;对宋体支持很好&#xff09;2、对于使…...

基于图像形态学处理的目标几何形状检测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................................... %二进制化图像 Images_bin imbinari…...

python系列教程211——map

朋友们&#xff0c;如需转载请标明出处&#xff1a;https://blog.csdn.net/jiangjunshow 声明&#xff1a;在人工智能技术教学期间&#xff0c;不少学生向我提一些python相关的问题&#xff0c;所以为了让同学们掌握更多扩展知识更好地理解AI技术&#xff0c;我让助理负责分享…...

SW - 3D打印件最好带上浮雕文字标记

文章目录 SW - 3D打印件最好带上浮雕文字标记概述笔记END SW - 3D打印件最好带上浮雕文字标记 概述 做了一些散料飞达的压板, 下了3D打印的单. 一共有10种压板, 每种压板做的数量不等.压板分为2个大的类(中间压板, 边上的压板), 每个类中分了5个子类, 子类之间只是一个高度方…...

Kafka-副本数量设置

1. ISR副本数量设置 指的是存活的副本数量 ISR 机制的另外一个相关参数是 min.insync.replicas , 可以在 broker 或者主题级别进行配置&#xff0c;代表 ISR 列表中至少要有几个可用副本。这里假设设置为 2&#xff0c;那么当可用副本数量小于该值时&#xff0c;就认为整个分…...

解决github打不开的方法

解决github打不开的方法 本文参考文章&#xff1a;解决可ping通但无法访问github网站的问题 一、确定域名github.com的ip地址 进入网址 IP/服务器github.com的信息 - 站长工具 (chinaz.com)&#xff0c;查看 ip 地址。 20.205.243.166 github.com二、确定域名github.global.…...

【云原生】Docker中容器管理常用所有命令

1.docker 容器创建流程 2.容器运行本质 docker run [OPTIONS] IMAGE [COMMAND] [ARG...] 创建容器基本选项&#xff1a;--name&#xff1a;为容器命名 -i&#xff1a;交互式创建容器 -d&#xff1a;后台创建容器 -t&#xff1a;为容器分配伪终端 Docker 容器存在的意义就是为…...

Flutter video_player点击重新播放

视频播放完成之后&#xff0c;暂停视频&#xff0c;点击重新播放 import package:flutter/material.dart; import package:video_player/video_player.dart;class ListViewItemWidget extends StatefulWidget{overrideState createState() {return _ListViewItemWidgetState()…...

CSS3属性之text-overflow:ellipsis

语法&#xff1a; text-overflow:clip | ellipsis 默认值为clip 不显示省略标记 clip:当前对象内文本溢出时不显示省略标记,而是将溢出部分裁剪。 ellipsis:当对象内文本一处时显示省略标记(...)。 一、常见的单行文本溢出显示省略写法&#xff1a; text-overflow: ellipsis; …...

【深度学习_TensorFlow】梯度下降

写在前面 一直不太理解梯度下降算法是什么意思&#xff0c;今天我们就解开它神秘的面纱 写在中间 线性回归方程 如果要求出一条直线&#xff0c;我们只需知道直线上的两个不重合的点&#xff0c;就可以通过解方程组来求出直线 但是&#xff0c;如果我们选取的这两个点不在直…...

C++使用 auto 自动推断类型

C使用 auto 自动推断类型 在有些情况下&#xff0c; 根据赋给变量的初值&#xff0c; 很容易知道其类型。 例如&#xff0c; 如果将变量的初值设置成了 true&#xff0c;就可推断其类型为 bool。如果您使用的编译器支持 C11 和更高版本&#xff0c;可不显式地指定变量的类型&a…...

【前端面试手撕题】call、bind、new、freeze、浅拷贝

FED11 _call函数 描述 请补全JavaScript代码&#xff0c;要求实现Function.call函数的功能且该新函数命名为"_call"。 <!DOCTYPE html> <html><head><meta charset"UTF-8"><style>/* 填写样式 */</style> </head…...

MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容测评

今天给大家带来了 MacBook Pro 16 M1 Max 升级 macOS Ventura 13.5 兼容 100 挑战赛 的视频&#xff0c;现在充电头再以文章的形式呈现给大家&#xff0c;让大家更清楚、直白的了解这款笔记本在升级系统后的兼容性如何。 MacBook Pro 16 M1 Max 配置了 140W 的 MagSafe 充电口&…...

实现5*5正方形网格x轴和y轴显示对应数值组件封装

实现5*5正方形网格x轴和y轴显示对应数值组件封装 需求&#xff1a;按5*5的正方形网格&#xff0c;根据目标数据的x和y轴值显示对应的文字&#xff0c;实现效果图如下&#xff1a;&#xff08;当前目标数值&#xff1a;x2&#xff0c;y2&#xff09; 代码如下&#xff1a; <…...

基于Matlab实现图像压缩技术(附上完整源码+图像+程序运行说明)

介绍 图像压缩是一种将图像数据压缩以减小文件大小的技术。在数字图像处理中&#xff0c;图像通常以像素阵列的形式表示。对于大型图像文件&#xff0c;传输和存储成本可能很高&#xff0c;因此图像压缩技术变得至关重要。在本文中&#xff0c;我们将介绍一种使用Matlab实现图…...

棒球联盟对于市场发展规划·棒球1号位

棒球联盟对于市场发展规划 1. 棒球联盟市场发展背景分析 在深入探讨棒球联盟市场发展背景之前&#xff0c;我们首先要明确&#xff0c;棒球&#xff0c;作为一种全球流行的体育项目&#xff0c;其在市场上的发展具有相当悠久的历史。棒球文化的起源可以追溯到上个世纪初&#…...

ansible控制主机和受控主机之间免密及提权案例

目录 案例描述 环境准备 案例一--免密远程控制主机 效果展示&#xff1a; 解决方案 1.添加主机 2.通过ssh-key生成密钥对 3.生成ssh-copy-id 4.验证 案例二-----免密普通用户提权 效果展示 解决方案 1.使用普通用户&#xff0c;与案例一 一样&#xff0c;进行发送密钥…...

flink1.17 eventWindow不要配置processTrigger

理论上可以eventtime processtime混用,但是下面代码测试发现bug,输入一条数据会一直输出. flink github无法提bug/问题. apache jira账户新建后竟然flink又需要一个账户,放弃 bug复现操作 idea运行代码后 往source kafka发送一条数据 a,1,1690304400000 可以看到无限输出…...

Python导出SqlServerl数据字典为excel

sql代码 SELECTtableName D.name ,tableIntroduce isnull(F.value, ),sort A.colorder,fieldName A.name,catogary B.name,bytes A.Length,lengths COLUMNPROPERTY(A.id, A.name, PRECISION),scales isnull(COLUMNPROPERTY(A.id, A.name, Scale), 0),isOrNotNull Cas…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M&#xff1a;百万&#xff08;Million&#xff09; B&#xff1a;十亿&#xff08;Billion&#xff09; 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的&#xff0c;但是一个参数所表示多少字节不一定&#xff0c;需要看这个参数以什么…...

遍历 Map 类型集合的方法汇总

1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

ssc377d修改flash分区大小

1、flash的分区默认分配16M、 / # df -h Filesystem Size Used Available Use% Mounted on /dev/root 1.9M 1.9M 0 100% / /dev/mtdblock4 3.0M...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

鸿蒙中用HarmonyOS SDK应用服务 HarmonyOS5开发一个医院查看报告小程序

一、开发环境准备 ​​工具安装​​&#xff1a; 下载安装DevEco Studio 4.0&#xff08;支持HarmonyOS 5&#xff09;配置HarmonyOS SDK 5.0确保Node.js版本≥14 ​​项目初始化​​&#xff1a; ohpm init harmony/hospital-report-app 二、核心功能模块实现 1. 报告列表…...

ElasticSearch搜索引擎之倒排索引及其底层算法

文章目录 一、搜索引擎1、什么是搜索引擎?2、搜索引擎的分类3、常用的搜索引擎4、搜索引擎的特点二、倒排索引1、简介2、为什么倒排索引不用B+树1.创建时间长,文件大。2.其次,树深,IO次数可怕。3.索引可能会失效。4.精准度差。三. 倒排索引四、算法1、Term Index的算法2、 …...

【HTML-16】深入理解HTML中的块元素与行内元素

HTML元素根据其显示特性可以分为两大类&#xff1a;块元素(Block-level Elements)和行内元素(Inline Elements)。理解这两者的区别对于构建良好的网页布局至关重要。本文将全面解析这两种元素的特性、区别以及实际应用场景。 1. 块元素(Block-level Elements) 1.1 基本特性 …...

【生成模型】视频生成论文调研

工作清单 上游应用方向&#xff1a;控制、速度、时长、高动态、多主体驱动 类型工作基础模型WAN / WAN-VACE / HunyuanVideo控制条件轨迹控制ATI~镜头控制ReCamMaster~多主体驱动Phantom~音频驱动Let Them Talk: Audio-Driven Multi-Person Conversational Video Generation速…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

C/C++ 中附加包含目录、附加库目录与附加依赖项详解

在 C/C 编程的编译和链接过程中&#xff0c;附加包含目录、附加库目录和附加依赖项是三个至关重要的设置&#xff0c;它们相互配合&#xff0c;确保程序能够正确引用外部资源并顺利构建。虽然在学习过程中&#xff0c;这些概念容易让人混淆&#xff0c;但深入理解它们的作用和联…...