python--实验6 字典与集合

知识点

集合 

集合(Set)在Python中是一种基本的数据结构,用于存储无序且不重复的元素。以下是关于集合的详细介绍:

集合的定义和特点


无序性:集合中的元素没有特定的顺序。
不重复性:集合中的元素都是唯一的,不允许有重复的元素。

创建集合


使用 `set()` 函数创建集合。

set_demo = {100, 'word', 10.5}
set_demo


使用 `{}` 创建集合时需要小心,因为 `{}` 通常用于创建空字典,除非大括号内包含元素。

set_one = set('tuple')      
set_one
set_two = set((13, 15, 17, 19))

 集合的常见操作


set_demo= {10, 151, 33, 98, 57}
set_demo.add(61)
print(set_demo)
set_demo.remove(151)                   
print(set_demo)
set_demo.pop()
print(set_demo)
set_demo.clear()
print(set_demo)

集合运算与更新

集合的属性和方法


`isdisjoint(T)` 如果集合S和T没有相同的元素,则返回True。
`len(S)` 返回集合S中元素的数量。

示例代码


# 创建集合
set_demo = {100, 'word', 10.5}# 添加元素
set_demo.add(61)# 删除元素
set_demo.remove(151)# 随机移除元素
set_demo.pop()# 清空集合
set_demo.clear()

字典

字典(Dictionary)在Python中是一种可变的容器模型,它存储键值对(key-value pairs),其中每个键是唯一的。

字典的定义


字典是Python中唯一的内建映射类型。
它允许存储任意类型的对象,包括但不限于数字、字符串、元组、列表等。

字典的键和值


键:必须是不可变类型,如数字、字符串或元组。键是唯一的,不能有重复。
值:可以是任何数据类型,包括另一个字典。

字典的创建和访问


使用 `{}` 创建字典,例如 `my_dict = {'key1': 'value1', 'key2': 'value2'}`。
访问字典中的值使用 `字典变量[键]` 的形式。

>>> users={'A': '123', 'B': '135', 'C': '680'}
>>> users['C']      	# 访问键对应的值
>>> users['A'] = '1*5@'    # 修改键对应的值

字典的常见操作
 

字典的遍历


遍历键:`for key in 字典变量.keys():`。

for key in a.keys():print(key)


遍历value值:`for value in 字典变量.values():`。

for value in a.values():print(value)

遍历key值,value值

#方式一
for key in a:print(key,a[key])
#方式二
for key in a.keys():print(key,a[key])
#方式三
for key,value in a.items():print(key,value)


遍历字典项:`for key, value in 字典变量.items():`。

for kv in a.items():print(kv)
字典的高级操作


使用 `in` 关键字检查键是否存在于字典中。
使用 `min(字典变量)` 和 `max(字典变量)` 来获取字典中最小和最大键所对应的值,这要求键是可比较的。

示例代码

# 创建字典
users = {'A': '123', 'B': '135', 'C': '680'}# 访问键对应的值
print(users['C'])# 修改键对应的值
users['A'] = '1*5@'# 增加字典元素
contacts = {'Tom': '123456', 'Jerry': '456789'}
contacts['Jane'] = '789012'# 遍历字典
for key in contacts:print(key, contacts[key])# 使用字典方法
keys = contacts.keys()
values = contacts.values()
items = contacts.items()# 清空字典
contacts.clear()

实验7 字典与集合

  • 实验目的

1.熟练python编辑器pycharm的使用;

2.掌握python中唯一的映射类型;

3.掌握python的字典与集合的操作方法;

  • 实验环境

本次实验需使用实验室提供的Windows主机环境+pycharm

  • 实验内容
  • 基础题从键盘输入10个整数存入序列p中,其中凡相同的数在p中只存入第一次出现的数,其余的都被剔除。

分析:序列p是一个包含不重复元素序列,此时p的类型定义为集合更合适。

代码:

# 创建一个空集合用于存储输入的整数
p = set()# 循环10次,每次从键盘接收一个整数
while len(p) < 10:try:# 从键盘输入一个整数number = int(input("请输入一个整数(确保输入10个不同的整数):"))# 将整数添加到集合p中,如果数字已存在,则不会重复添加p.add(number)except ValueError:# 如果输入的不是整数,提示错误并重新输入print("输入错误,请输入一个有效的整数。")# 打印最终的集合p
print("输入的不重复整数序列为:", p)
  • 基础题小明想在学校中请一些同学一起做一项问卷调查,为了实验的客观

性他先用计算机生成了N个1~1000之间的随机整数(N<=1000),N是用户输入的,对于其中重复的数字,只保留一个,把其余相同的数字去掉,不同的数对应着不同的学生的号,然后再把这些数从小到大排序,按照排好的顺序去找同学做调查,请你协助小明完成“去重”与排序工作。

程序运行效果如下图所示:

提示:sorted() 函数对所有可迭代的对象进行排序操作。

代码:

import random# 用户输入N
N = int(input("请输入要生成的随机整数的数量N(N <= 1000):"))# 检查N是否在合理范围内
if N <= 0 or N > 1000:print("输入的N超出了允许的范围。")
else:# 生成N个随机整数,并使用集合去除重复random_numbers = set()while len(random_numbers) < N:random_numbers.add(random.randint(1, 1000))# 对生成的随机数进行排序sorted_numbers = sorted(random_numbers)# 打印结果print("去重并排序后的随机数序列为:", sorted_numbers)# 按照排序后的序列去邀请同学做问卷调查for number in sorted_numbers:print(f"邀请学号为{number}的同学进行问卷调查。")
  • 基础题有英文句子“Anything you think is worth doing is worth doing”,程序打印出每个单词及其重复的次数。

提示:此处认为单词之间以空格为分隔符,并且不包含标点符号。

程序运行效果如下图所示:

代码:

# 英文句子
sentence = "Anything you think is worth doing is worth doing"# 将句子转换为小写,以避免大小写影响单词计数
sentence = sentence.lower()# 使用空格分割句子为单词列表
words = sentence.split()# 创建一个空字典来存储单词及其出现次数
word_count = {}# 遍历单词列表,统计每个单词的出现次数
for word in words:if word in word_count:word_count[word] += 1else:word_count[word] = 1# 打印每个单词及其出现次数
for word, count in word_count.items():print(f"单词 '{word}' 出现了 {count} 次。")
  • 基础题数字重复统计:

1) 随机生成100个整数

2) 数字范围[20,30]

3) 升序输出所有不同的数字及其每个数字的重复次数。

程序运行效果如下图所示:

代码:

import random# 设置随机数生成的范围和数量
range_start = 20
range_end = 30
number_of_integers = 100# 生成100个随机整数,并去除重复数字
unique_numbers = set()
while len(unique_numbers) < number_of_integers:unique_numbers.add(random.randint(range_start, range_end))# 计算每个数字的出现次数
number_counts = {}
for number in unique_numbers:number_counts[number] = number_counts.get(number, 0) + 1# 对数字进行排序并打印每个数字及其出现次数
for number in sorted(number_counts):print(f"数字 {number} 出现了 {number_counts[number]} 次。")

总结

直接把两次实验涉及到的数据类型总结。

数据类型

列表(list)

元组(tuple)

字典(dictionary)

集合(set)

表示

[]

()

{}

{}

是否有序

有序

有序

无序

无序

是否读写

读写

只读

读写

读写(覆盖)

元素可修改

空定义

a_list = []

a_tuple = ()

a_dict = {}

a_set =set();

<br>not_sure = {} 空字典

下标访问

a_list[0] = 23

a_tuple[0]

a_dict[‘age’] = 30

添加元素

+appendextendinsert

不可添加

a_dict[new_key] = value

addupdate

删除元素

delremovepop()pop(1)clear

不可删除

poppopitemclear

discardremovepopclear

元素查找

indexcountin

in

a_dict[key]

in

布尔真值

非空

非空

非空

非空

定义

列表(list)是有序的集合,可以存放不同数据类型的数据,并且list中的每个元素的都对应着一个索引来标记其位置,且索引从0开始。可以嵌套

tuplelist类似,不同之处在于tuple中的元素不能进行修改。而且tuple使用小括号()list使用方括号[]

dic字典是另一种可变的容器模型,且可存储任意类型对象。字典每个键值(key:value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号{}

set()函数是创建一个无序不重复元素集,可添加,删除数据,还可以计算交集、差集、并集等。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/869036.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java面试之消息中间件常见面试题

1、什么是消息中间件&#xff1f; 消息中间件&#xff08;Message-Oriented Middleware&#xff0c;简称MOM&#xff09;是一种异步通信机制&#xff0c;用于解决分布式系统中应用程序之间通信的问题。它基于消息的发布/订阅机制或点对点机制&#xff0c;实现了高效、可靠、可…

喜讯|华院钢铁行业大模型入选“2024全国企业新质生产力赋能典型案例”

7月2日&#xff0c;由中国科学院主管、科学出版社主办的商业周刊《互联网周刊》&#xff08;CIW&#xff09;联合德本咨询&#xff08;DBC&#xff09;、中国社会科学院信息化研究中心&#xff08;CIS&#xff09;发布了“2024全国企业新质生产力赋能典型案例”。华院计算技术&…

巴基斯坦火爆的slots游戏借力Facebook广告获客优势分析

巴基斯坦火爆的slots游戏借力Facebook广告获客优势分析 在巴基斯坦&#xff0c;Slots游戏凭借其独特的魅力和玩法&#xff0c;深受玩家的喜爱。而在众多的推广渠道中&#xff0c;Facebook广告代投凭借其显著的优势&#xff0c;成为了Slots游戏在巴基斯坦市场推广的重要选择。以…

基于Spring Boot的高校智慧采购系统

1 项目介绍 1.1 摘要 随着信息技术与网络技术的迅猛发展&#xff0c;人类社会已跨入全新信息化纪元。传统的管理手段因其内在局限&#xff0c;在处理海量信息资源时日渐捉襟见肘&#xff0c;难以匹配不断提升的信息管理效率和便捷化需求。顺应时代发展趋势&#xff0c;各类先…

降压转换器-从分立电路到完全集成的模块

降压转换器已存在了一个世纪&#xff0c;是当今电子电路中不可或缺的一部分。本文将讲述一个原始分立式器件如何演变成可以处理数百瓦功率的微型高集成器件。 降压转换器是将输入电压转换为较低的输出电压&#xff0c;基本原理如图 1所示。最初&#xff0c;开关 SW1 关断&…

【k8s中安装rabbitmq】k8s中安装rabbitmq并搭建镜像集群-hostpath版

文章目录 简介一.条件及环境说明二.需求说明三.实现原理及说明四.详细步骤4.1.规划节点标签4.2.创建configmap配置4.3.创建三个statefulset和service headless配置4.4.创建service配置 五.安装完后的配置六.安装说明 简介 k8s集群中搭建rabbitmq集群服务一般都会用到pvc&#x…

中国科学院院士丁汉:人形机器人——机器人与人工智能结合的爆发点

工业制造是国民经济的重要支柱&#xff0c;是实现发展升级的国之重器。早在 2002 年&#xff0c;党的十六大就曾提出&#xff0c;坚持以信息化带动工业化&#xff0c;以工业化促进信息化&#xff0c;走出一条科技含量高、经济效益好、资源消耗低、环境污染少、人力资源优势得到…

DevEco Studio加上AI-通义灵码插件安装

一、下载通义灵码离线安装包 打开官网&#xff0c;https://tongyi.aliyun.com/lingma/download 下载的ZIP文件是&#xff1a;tongyi-jetbrains-latest.zip 二、设置中插件内安装DevEco插件 选择刚下载的ZIP包&#xff0c;确认安装即可。 三、应用确定 如果没有效果就重启DevE…

权力之望怎么下载客户端 权力之望客户端一键下载

权力之望是一款MMORPG新作&#xff0c;支持PC和APP双版本游玩&#xff0c;玩家可以在这里体验自由成长和无限探索的乐趣&#xff0c;并加入这场声势浩大、危机四伏的夺权之战中。游戏的自由度极高&#xff0c;我们在创建角色时就可以感受的到&#xff0c;设有54种能力和60多种职…

升级iOS18有问题?学会这2招能解决90%iOS问题!

在 iOS 18beta发布后&#xff0c;有部分朋友升级后表示遇到了各种奇怪问题&#xff0c;比如升级卡在Apple Logo&#xff0c;黑屏&#xff0c;无限重启&#xff0c;卡在恢复模式&#xff0c;程序闪退&#xff0c;电池消耗过快&#xff0c;发烫等问题。 于是&#xff0c;小编决定…

js之空值合并运算符 ‘??‘

空值合并运算符&#xff08;nullish coalescing operator&#xff09;的写法为两个问号 ??。 简单理解为当一个值既不是 null 也不是 undefined 时&#xff0c;我们将其称为“已定义的&#xff08;defined&#xff09;”。 a ?? b 是来判断a是否是已定义的&#xff0c;结…

延迟初始化:优化资源管理的关键技术

目录 本文摘要 引言 什么是延迟初始化&#xff1f; 延迟初始化的优势 如何使用Lazy实现延迟初始化 结论 后记 本文摘要 使用Lazy<T>进行延迟初始化&#xff08;Lazy Initialization&#xff09;在C#中是一种常见的设计模式&#xff0c;它主要用于优化资源管理&…

IP地址与网络监控

在当今的数字时代&#xff0c;网络安全已成为企业和个人都十分关注的重要话题。通过IP地址进行网络监控&#xff0c;可以有效地检测异常流量和可疑活动&#xff0c;从而保护网络免受潜在威胁。本文将详细讨论如何利用IP地址进行网络监控&#xff0c;以及如何识别和应对异常流量…

C++:cv.threshold

cv::threshold 是 OpenCV 库中用于图像阈值化处理的一个非常重要的函数。这个函数通过给定的阈值将图像中的像素值划分为不同的类别&#xff0c;通常用于图像分割、物体检测、特征提取等任务。以下是对 cv::threshold 函数的详细介绍&#xff1a; 一、函数原型 double cv::th…

【C++题解】1290 - 二进制转换十进制

问题&#xff1a;1290 - 二进制转换十进制 类型&#xff1a;进制转换 题目描述&#xff1a; 请将一个 25 位以内的 2 进制正整数转换为 10 进制&#xff01; 输入&#xff1a; 一个 25 位以内的二进制正整数。 输出&#xff1a; 该数对应的十进制。 样例&#xff1a; 输…

【大数据】什么是数据湖?一文揭示数据湖的本质

很多人跟我一样&#xff0c;对于数据湖充满好奇&#xff0c;也许还读了不少数据湖文章&#xff0c;但无论别人怎么说&#xff0c;你还是会觉得难以把握数据湖的本质。 有些人会望文生义说&#xff0c;数据湖嘛&#xff0c;就是什么东西都可以往里面扔&#xff0c;特别是对非结构…

//usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用

//usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用 编译安装sqlite3之后&#xff0c;会出现 “ //usr/lib/libgdal.so.20:对‘sqlite3_column_table_name’未定义的引用”的报错&#xff0c;主要是因为之前安装低版本sqlite3的时候改了系统的文件导致的 …

Java面试八股之MySQL如何使用explain优化SQL和索引

MySQL如何使用explain优化SQL和索引 在MySQL中&#xff0c;EXPLAIN是一个非常有用的工具&#xff0c;用于分析和优化SQL查询。它可以帮助你理解查询执行计划&#xff0c;包括如何使用索引、表的连接方式、是否使用了临时表或文件排序等。以下是一些使用EXPLAIN来优化SQL查询和…

特色商业街、会展补贴!合肥市各区县促进经济发展政策商务部分申报奖补和条件程序指南

合肥市各区县促进经济发展政策商务部分申报奖补奖励和条件程序指南盘点讲解&#xff0c;包括首店经济、特色商业街区、楼宇经济、新成立销售公司、住餐企业增长、会展经济、企业“走出去”、合同外资到资、引进世界500强企业、外包在岸、离岸业务规模、升限入统、零售批发企业扩…

【区块链+跨境服务】粤澳跨境数据验证平台 | FISCO BCOS应用案例

立足深化大湾区一体化融合的发展格局&#xff0c;实现跨境数据的互联互通是促进高水平跨境合作的必要前提&#xff0c;然而&#xff0c;在“一 国两制三法域”的背景下&#xff0c;三地监管存在显著差异&#xff0c;机构间直接跨境传输个人数据门槛较高&#xff0c;过去也缺乏可…