python--实验6 字典与集合

news2024/9/24 9:26:47

知识点

集合 

集合(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] += 1
    else:
        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.coloradmin.cn/o/1910425.html

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

相关文章

【Ruby爬虫06】企业基本信息查询

查询结果 查询接口 # frozen_string_literal: true require http require json def query(company_name) # 获取基本信息 headers { User-Agent > Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/97.0.4692.71 S…

高职人工智能基础教学解决方案

前言 随着人工智能技术的迅猛发展&#xff0c;其在各行各业的应用日益广泛&#xff0c;对人才的需求也呈现出爆发式增长。高职院校作为培养技术技能人才的重要基地&#xff0c;如何有效实施人工智能基础教学&#xff0c;培养具备人工智能素养的高素质人才&#xff0c;已成为当…

golang 项目打包部署环境变量设置

最近将 golang 项目打包部署在不同环境&#xff0c;总结一下自己的心得体会&#xff0c;供大家参考。 1、首先要明确自己目标服务器的系统类型(例如 windows 或者Linux) &#xff0c;如果是Linux 还需要注意目标服务器的CPU架构(amd或者arm) 目标服务器的CPU架构可执行命令&…

字节码编程javassist之修改返回值

写在前面 本文看下如何修改返回值。 代码 需要增强的类&#xff1a; package com.dahuyou.javassist.huohuo.cc;import java.math.BigDecimal;public class MyApiTestNoAnnotation {public double queryUserInfo(String uId){return BigDecimal.ONE.doubleValue();}}插桩类…

聚道云赋能,财务流程大提速,NC凭证对接一键通!

客户介绍 某煤炭交易中心有限公司是中国煤炭行业的重要交易与服务平台之一。公司依托丰富的煤炭资源优势和深厚的行业底蕴&#xff0c;致力于打造煤炭交易、物流、金融、信息、技术服务等多功能于一体的综合性服务平台。公司不仅促进了煤炭资源的合理流动和有效配置&#xff0…

如何在抖音小程序上展示VR全景?

如果您或者您服务的甲方需要在抖音小程序中打开720全景漫游链接&#xff0c;就需要在720云平台进行小程序校验。总体来说&#xff0c;在720云平台提交对应小程序信息后&#xff0c;您将获得720云业务域名&#xff0c;将此业务域名配置到抖音小程序后台&#xff0c;即完成校验&a…

本地部署,AuraSR全新图像超分辨率模型

目录 前言&#xff1a; Usage docker安装 运行结果 结论&#xff1a; Tip&#xff1a; 问题1&#xff1a;docker部署 问题2&#xff1a;API处理 问题3&#xff1a;网络问题 问题4&#xff1a;程序开发 前言&#xff1a; 一款名为AuraSR的全新图像超分辨率模型引起了…

springbootAl农作物病虫害预警系统-计算机毕业设计源码21875

摘要 随着农业现代化的推进&#xff0c;农作物病虫害的防治已成为农业生产中的重要环节。传统的病虫害防治方法往往依赖于农民的经验和观察&#xff0c;难以准确、及时地预测和防控病虫害的发生。因此&#xff0c;开发一种基于现代信息技术的农作物病虫害预警系统&#xff0c;对…

uni-app三部曲之一: Pinia使用

1.引言 最近在学习移动端的开发&#xff0c;使用uni-app前端应用框架&#xff0c;通过学习B站的视频以及找了一个开发模板&#xff0c;终于是有了一些心得体会。 B站视频1&#xff1a;Day1-01-uni-app小兔鲜儿导学视频_哔哩哔哩_bilibili B站视频2&#xff1a;01-课程和uni的…

Redis 实现的延时队列组件

最近看开源看到一个好用的延时队列组件&#xff0c;已经上生产。代码量很少&#xff0c;主要就是利用Redis监听过期键实现的。然后搞点策略模式柔和柔和。利用Spring Start 封装了一下&#xff0c;全是俺掌握的知识&#xff0c;稍微研究了下就搞懂了。觉得挺有用的&#xff0c;…

人话学Python-基础篇-数字计算

一&#xff1a;数字类型 对于最常见的数据类型,数字在Python中分为三类&#xff1a; 整型(int) 表示的是整数类型的所有数字&#xff0c;包括正整数&#xff0c;负整数和0。和C语言不同的是&#xff0c;Python中的int型没有范围的限制&#xff0c;理论上可以从无限小的整数取到…

想实现随时随地远程访问?解析可道云teamOS内网穿透功能

在数字化时代&#xff0c;无论是个人还是企业&#xff0c;都面临着数据共享与远程访问的迫切需求。 比如我有时会需要在家中加班&#xff0c;急需访问公司内网中的某个关键文件。 然而&#xff0c;由于公网与内网的天然隔阂&#xff0c;这些需求往往难以实现。这时&#xff0c…

智慧运维管理平台建设方案(PPT原件)

1、智慧运维系统建设背景 2、智慧运维系统建设目标 3、智慧运维系统建设内容 4、智慧运维系统建设技术 5、智慧运维系统建设流程 6、智慧运维系统建设收益 软件全套资料获取及学习&#xff1a;本文末个人名片直接获取或者进主页。

前端工程师

15年前&#xff0c;前端主流的框架jquery&#xff0c;那个时候还没有前端工程师,后端开发人员既要写后台业务逻辑&#xff0c;又要写页面设计&#xff0c;还要应付IE不同版本浏览器兼容问题&#xff0c;非常的繁琐、难搞。 现在前端框架很多、很强大&#xff0c;前端开发工程师…

响应式的vue框架搭建个人博客网站模板

Vue框架搭建个人博客站点&#xff0c;html5 响应式个人博客模板 微信扫码免费获取源码

(NeurIPS,2022)Knowledge-CLIP:使用知识图谱进行CLIP

文章目录 Contrastive Language-Image Pre-Training with Knowledge Graphs相关资料摘要引言回顾CLIPKnowledge-CLIP数据准备模型架构训练目标 Contrastive Language-Image Pre-Training with Knowledge Graphs 相关资料 论文&#xff1a;Contrastive Language-Image Pre-Tra…

基于springboot+vue+uniapp的机电公司管理信息系统

开发语言&#xff1a;Java框架&#xff1a;springbootuniappJDK版本&#xff1a;JDK1.8服务器&#xff1a;tomcat7数据库&#xff1a;mysql 5.7&#xff08;一定要5.7版本&#xff09;数据库工具&#xff1a;Navicat11开发软件&#xff1a;eclipse/myeclipse/ideaMaven包&#…

js计算两个日期直接的间隔天,2018/12/14到2017/11/10有多少天

const startDate new Date(2017-11-10)const endDate new Date(2018-12-14)const diffTime Math.abs(endDate - startDate)const diffDays Math.ceil(diffTime / (1000 * 60 * 60 * 24))console.log(diffDays) // 输出天数差 人工智能学习网站 https://chat.xutongbao.top…

如何将libwebsockets库编译为x86架构

在之前的文章中&#xff0c;我们已经详细介绍了如何交叉编译libwebsockets并将其部署到ELF 1开发板上。然而在调试阶段&#xff0c;发现将libwebsockets在Ubuntu环境下编译为x86架构可能更为方便和高效。 通过在主机环境中编译运用x86架构下的libwebsockets库&#xff0c;可以…

详细解读COB显示屏使用的共阴技术原理

倒装COB显示屏技术中采用的共阴技术是一种旨在提升能效并且减少驱动功耗的LED驱动方式&#xff0c;常规LED显示屏一般采用共阳极或者独立驱动的方式&#xff0c;而共阴技术就有所不同了&#xff0c;其基本原理如下&#xff1a; 一、基本概念&#xff1a;   共阴技术是指在LED…