千家信息网

python中dict和set的详细介绍

发表于:2025-01-24 作者:千家信息网编辑
千家信息网最后更新 2025年01月24日,本篇内容介绍了"python中dict和set的详细介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成
千家信息网最后更新 2025年01月24日python中dict和set的详细介绍

本篇内容介绍了"python中dict和set的详细介绍"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

目录
  • 一、集合

    • 1.集合定义

    • 2.创建集合

    • 3.去重

    • 4.集合增删

    • 5.关系运算

    • 6.排序

    • 7.frozenset

    • 8.练习

    • 9.特性

  • 二、字典

    • 1.字典定义

    • 2.字典打印

    • 3.字典元素删除

    • 4.setdefault

    • 5.defaultdict


一、集合

1.集合定义

  • 集合(set)是一个无序的不重复元素序列。

2.创建集合

  • 使用大括号 { } 或者 set() 函数创建集合;

  • 创建一个空集合必须用 set() 而不是 { }

  • { } 是用来创建一个空字典。

s = {1,2,3,4}print(s,type(s))

3.去重

s = {1,2,3,4,3,2,1}print(s,)

4.集合增删

s = {1,2,3}s.add(4) #单个元素print(s)s.update({4,5,6}) #多个元素print(s)s = {1,2,3,4,5,6}s.remove(4) #移除某个print(s)s.pop() #随机移除print(s)

5.关系运算

s1 = {1,2,3}s2 = {1,2,4}print(s1 - s2)print(s1 & s2)print(s1 ^ s2)print(s1 | s2)

6.排序

s = {1,6,3,8,5}print(sorted(s))

7.frozenset

  • frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。

  • frozenset 的这些方法和 set 集合同名方法的功能完全相同。frozenset 的作用主要有两点:

当集合元素不需要改变时,使用 frozenset 代替 set 更安全。

当某些 API 需要不可变对象时,必须用 frozenset 代替set。比如 dict 的 key 必须是不可变对象,因此只能用 frozenset;再比如 set 本身的集合元素必须是不可变的,因此 set 不能包含 set,set 只能包含 frozenset。

s = frozenset({1,2,3})print(s, type(s))

8.练习

明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从大到小排序,按照排好的顺序去找同学做调查。请你协助明明完成"去重"与"排序"的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。

import randoms = set()n = int(input("the count:"))for i in range(n):    s.add(random.randint(1,1000))print(sorted(s,reverse=True))

9.特性

  • 不支持连接+,重复*,检索 index,切片slice

  • 支持in,not in

二、字典

1.字典定义

  • 字典是另一种可变容器模型,且可存储任意类型对象。

  • 键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一。

判断字符是否在字典内,注意此处的字符为键值key的内容,而不是value

d = {'name':'jia' , 'age':'18' , 'city':'xian'}print(d,type(d))print('name'in d)print('jia'in d)

2.字典打印

键值、value、字典打印

d = {'name':'jia' , 'age':'18' , 'city':'xian'}print(d.keys())print(d.values())print(d.items())print(d['name'])print(d['age'])print(d['city'])

打印value

print(d['name'])print(d['age'])print(d['city'])


按照字典格式,自定义键值和value,获取value

print(d['province']) #不存在的元素会异常报错print(d.get('province', 'shanghai'))

添加及修改字典内value

d = {'name':'jia', 'age':'18'}d['name'] = 'zhao'print(d)d['city'] = 'xian'print(d)


循环打印字典内容

for item in d:    print(item)for item in d.items():    print(item)


双变量循环打印字典

for k,v in d.items():    print(f'key={k},value={v}')

3.字典元素删除

方法一:pop()方法弹出指定元素

d = {'name':'jia' , 'age':'18' , 'city':'xian'}d.pop('name')print(d)

方法二:del()方法删除指定元素:

d = {'name':'jia' , 'age':'18' , 'city':'xian'}# d.pop('name')del d['age']print(d)

4.setdefault

设置键值默认为指定value,当默认value被指定后,不会再改变

d = {'name':'jia' , 'age':'18' , 'city':'xian'}d.setdefault('city','luoyang')print(d)d.setdefault('city','beijing')print(d)

5.defaultdict

  • collections.defaultdict类,本身提供了默认值的功能, 默认值可以是整形,列表,集合等.

  • defaultdict 是 dict 的子类。但它与 dict 最大的区别在于,如果程序试图根据不存在的 key 访问 value,会引发 KeyError 异常;而 defaultdict 提供default_factory 属性,该为不存在的 key 来自动生成生成默认的 value。

需求:

我们想要一个能将键(key)映射到多个值的字(即所谓的一键多值字典)

解决方案:

1). 字典是一种关联容器,每个键都映射到一个单独的值上。如果想让键映射到多个值,需要将这些多个值保存到容器(列表或者集合)中。

2). 利用collections模块中的defaultdict类自动初始化第一个值,这样只需关注添加元素.

from collections import defaultdictd = defaultdict(int)d['num'] += 1print(d)d = defaultdict(list)d['hosts'].append('host1')print(d)d = defaultdict(set)d['media'].add('demo')print(d)

"python中dict和set的详细介绍"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

字典 元素 方法 可变 内容 多个 排序 支持 容器 对象 生成 不同 相同 功能 同学 字符 更多 特性 知识 循环 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 网络技术国内外研究状况 距离天台最近的移动服务器端口 数据库安全标准的发展过程 上海蛙扑网络技术官网 DELL服务器固件升级方法 华为真正技术是网络技术 公司网站服务器怎么登陆 虎丘区知名服务器价格咨询 数据库工程师培训价格 net软件开发的面试流程 电子商务网络安全解决 中国实用天然药物数据库 信息化和网络安全十四五规划 风成网络技术工作室 网络安全中职技能大赛 构筑网络安全坚强屏障 上海敏捷软件开发企业 创建模式和创建数据库 石河子市品格互联网科技 华为服务器h58m 安装系统 足球数据软件开发商 网络技术的两空格的间隔 网络安全的研究领域包括什么 linux修改服务器时间地址 两个数据库怎么用union 数据库 实型 使命召唤与暴雪服务器连接丢失 数据库 销售系统需求分析 扬州企业网络安全准入控制报价 oracle数据库查看所有表
0