【python】字典(Dictionary)与集合(Set)

字典是一种键值对的数据结构,而集合是一种无序、元素不重复的数据结构。

目录

前言

正文

一、字典(dict)

        1、字典的定义

        注意:

        2、字典的查询

        2.1 语法:字典名['键名']

        2.2 语法:字典名.get('键名')

        3、删除

        3.1 del删除指定键值对

        3.2 pop根据指定key删除键值对

    3.3 clear清除字典里所有键值对,返回一个空字典

        4、改/增字典

        4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对

        4.2 字典.update({键值对})  用于添加一个或多个键值对,或者说是字典的拼接直接添加字典

         5、字典的长度len返回有多少对键值对

        6、成员运算符 in  和 not in  ,判断某个元素的是否是字典的key

        7、获取字典的键或值

        7.1 keys/values 分别获取键/值进行返回

        7.2  字典.items()  同时获取键和值

二、集合

        1、集合定义

        注意:

         2、增加

        2.1 集合.add(元素) 添加元素,整体添加

        2.2 集合.update(可迭代对象)  分散添加

        3、删除集合

        3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错

        3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变

        4、求集合的长度len()

         5、成员运算符in和not in

        6、集合的关系运算符 

        1、交集 &:a&b 输出集合a和集合b中都包含的元素

        2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素

        3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素

总结


前言

        字典(Dictionary)通常用于需要根据某个唯一标识(键)来检索相关数据(值)的情况,例如存储用户信息、配置项等。

        集合(Set)则常用于存储一组唯一的元素,可以用于去除重复元素、快速查找是否存在某个元素等场景,比如统计唯一单词数、过滤重复数据等。


正文

一、字典(dict)

        1、字典的定义

        作用:用于存储多个数据,每一个数据都又唯一的键(key)进行对应,不支持下标操作,是可迭代对象

        格式:{"键名1":"值1","键名2":"值2","键名3":"值3".....}     由键值对组成

        注意:

                1)、字典的key不可以是列表、字典、集合等可变类型,只能是字符串、数值、元组等不可变类型,但是值可以是任意类型

                2)、字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值

                3)、字典可以增删改查,是可变类型,但是字典的无序性的,不存在索引的概念

# 字典的key不可以是列表、字典、集合等可变类型
# 只能是字符串、数值、元组等不可变类型,但是值可以是任意类型
user = {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
print(user)  # {'key': [1, 2, 3], 1: {'a': 1, 'b': 2}, (1, 2): 'abc'}
# dic = {[1, 2]: 'abc'}  # TypeError: unhashable type: 'list'  报错  列表不能做key

# 字典的key具备唯一,在字典里key不能被重复,如果重复那后面的值,会覆盖前面的值
dic1 = {'name': '写代码也摆烂', 'age': 18, 'name': '加油写代码啊!'}
print(dic1)

字典和集合散列类型,字符串、列表、元组序列类型

        2、字典的查询

        前面我们学的查,都是通过索引,来进行查找某个值,字典不同,他是通过key来查询

        2.1 语法:字典名['键名']
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic['name'])  # 输出:写代码也摆烂
# 这里只能写键名,如果写值或者其他的值,会直接报错
print(dic['写代码也摆烂'])  # 报错  KeyError: '写代码也摆烂'
        2.2 语法:字典名.get('键名')
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.get('name'))  # 输出:写代码也摆烂
# 这里可以这里的键名可以随便写,如果有对应的值,返回该值,如果没有则返回None
print(dic.get('写代码也摆烂'))  # 没有找到该键名返回   None

        3、删除

        3.1 del删除指定键值对
dic = {'name': '写代码也摆烂', 'age': 18}
del dic['name']  # 删除键为name的键值对
print(dic)  # {'age': 18}
# 需要注意不能对没有的进行删除
del dic['name']  # 因为上面删除了所有已经没有name了  直接报错:KeyError: 'name'
        3.2 pop根据指定key删除键值对

                在列表中pop用于索引删除,不知道默认删除最后一个元素

dic = {'name': '写代码也摆烂', 'age': 18}
dic.pop('name')  # 删除键为name的键值对
print(dic)  # {'age': 18}
# 需要注意不能对没有的进行删除
dic.pop('name')  # 因为上面删除了所有已经没有name了  直接报错:KeyError: 'name'
    3.3 clear清除字典里所有键值对,返回一个空字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.clear()
print(dic)  # {}

        4、改/增字典

        4.1 字典[键名] = 值:键名存在就修改字典,键名不存在则新增一个键值对

        注意键名不能直接修改

dic = {'name': '写代码也摆烂', 'age': 18}
dic['age'] = 20  # 有age这个键则修改age的值
print(dic)  # 输出:{'name': '写代码也摆烂', 'age': 20}
dic['sex'] = 'man'  # 没有该键,则新增一个键值对
print(dic)  # 输出:{'name': '写代码也摆烂', 'age': 20, 'sex': 'man'}
        4.2 字典.update({键值对})  用于添加一个或多个键值对,或者说是字典的拼接直接添加字典
dic = {'name': '写代码也摆烂', 'age': 18}
dic.update({'sex': 'man'})  # 添加一个或多个键值对,或者说添加一个字典
print(dic)  # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man'}
dic1 = {'写代码': '摆烂'}
dic.update(dic1)
print(dic)  # {'name': '写代码也摆烂', 'age': 18, 'sex': 'man', '写代码': '摆烂'}

         5、字典的长度len返回有多少对键值对

dic = {'name': '写代码也摆烂', 'age': 18}
print(len(dic))  # 2

        6、成员运算符 in  和 not in  ,判断某个元素的是否是字典的key

dic = {'name': '写代码也摆烂', 'age': 18}
print('name' in dic)  # True
print('写代码也摆烂' in dic)  # False

        7、获取字典的键或值

        7.1 keys/values 分别获取键/值进行返回
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.keys())  # 返回所有的键  dict_keys(['name', 'age'])
print(dic.values())  # 返回所有的值  dict_values(['写代码也摆烂', 18])
print(list(dic.keys()))  # 返回所有键的列表    ['name', 'age']
print(list(dic.values()))  # 返回所有值的列表  ['写代码也摆烂', 18]
        7.2  字典.items()  同时获取键和值
dic = {'name': '写代码也摆烂', 'age': 18}
print(dic.items())  # dict_items([('name', '写代码也摆烂'), ('age', 18)])  返回特殊类型
for i, j in dic.items():
    print(i, j)

二、集合

        1、集合定义

        作用:集合用于存储一组唯一的元素,常用于去除重复元素、快速查找是否存在某个元素等操作,无序,是可迭代对象

        格式:{数据1,数据2,数据3....数据n}

        定义:set()/{数据1,数据2}

# 定义集合
s1 = {1, 2, 3}
s2 = set([4, 5, 6])
print(s1, type(s1))  # {1, 2, 3} <class 'set'>
print(s2, type(s2))  # {4, 5, 6} <class 'set'>
# 定义空集合,需要注意必须使用set来创建
s3 = {}  # 这是创建空字典
s4 = set()  # 这是创建集合
print(s3, type(s3))   # {} <class 'dict'>
print(s4, type(s4))  # set() <class 'set'>
        注意:

        1)定义空集合必须使用set来定义

        2)集合元素必须是不可变类型(如列表 字典 集合会报错)

         3)元素的唯一性,在集合里是没有重复的元素的,会自动去重

        4)元素的无序性,集合的元素是没有顺序的,意味着集合是没有索引的,所以没有修改和查询操作

# s = {1, 2, 3, [1, 2]}  # 报错 TypeError: unhashable type: 'list'
s = {1, 2, 3, 4, 4, 3, 4, 2, 3, 4}  # 重复值会自动掉,只剩一个
print(s)  # {1, 2, 3, 4}
s1 = {1, 2, 3, 'a', 'c', (1, 3)}
print(s1)
# 无序性  每次输出都会发生不同的变化
# 1 {1, 2, 3, 'c', 'a', (1, 3)}
# 2 {1, 2, 3, 'c', (1, 3), 'a'}
# 3 {1, 2, 3, 'a', 'c', (1, 3)}

         2、增加

        2.1 集合.add(元素) 添加元素,整体添加
s = {1, 2, 3, 4, 5}
s.add(6)
print(s)  # {1,2,3,4,5,6}
# 如果添加重复的元素也会被去重
s.add(5)
print(s)  # {1,2,3,4,5,6}
# 整体添加
s.add('abc')
print(s)  # {1, 2, 3, 4, 5, 6, 'abc'}  直接将一整个字符串'abc'添加进去
        2.2 集合.update(可迭代对象)  分散添加
s = {1, 2, 3, 4, 5}
s.update('abc')
#分散添加
print(s)  # {1, 2, 3, 4, 5, 'a', 'b', 'c'}
# 将'abc'拆开来添加进去了

        3、删除集合

        3.1 集合.remove 删除指定的元素,如果集合有就会删除,没有会报错
s = {1, 2, 3, 4, 5}
s.remove(1)
print(s)  # {2, 3, 4, 5}
s.remove(0)  # KeyError: 0
        3.2 集合.discard() 删除指定元素,有就删除,没有不会发生任何改变
s = {1, 2, 3, 4, 5}
s.discard(1)
print(s)  # {2, 3, 4, 5}
s.discard(0)  # 没有需要删除的,不发生任何改变
print(s)

        4、求集合的长度len()

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

         5、成员运算符in和not in

s = {1, 2, 3, 4, 5}
print(1 in s)  # True

        6、集合的关系运算符 

        1、交集 &:a&b 输出集合a和集合b中都包含的元素
        2、并集/合集 |:a|b 输出集合a和集合b中包含的所有元素
        3、差集 -:a-b 输出集合a中包含而集合b中不包含的元素
a = {1, 2, 3, 4, 5, 6}
b = {2, 4, 6, 8}
print(a & b)  # {2, 4, 6}
print(a | b)  # {1, 2, 3, 4, 5, 6, 8}
print(a - b)  # {1, 3, 5}

总结

字典还是比较方便的,集合的话用的少。

欢迎指正!

  • 39
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值