联想说 Python 基础 13 - 字典与集合

字典

从前面来看,符合数据类型都大差不差。那为什么还要这么多数据类型呢?

因为不同的复合类型有各自的特点,而我们主要就是对这些特点的运用。

字典类型

字典类型,就我个人来说十分只喜欢,首先看一下格式:

{键: 值,......}

比如我们定义一个字典:

zd = {'name': 'alice', 'age': 16, 'sex': 'girl'}

相对于列表来说

lb = ['alice', 16, 'girl']

字典能更好的体现这个值的含义,比如 alice 前面是 name,这表示姓名。name 是键,alice 是值,整体我们称为键值对,字典就是由键值对组成的。

特点

  1. 无序性:字典中的元素是无序的
  2. 可变性:字典是可变的,可以动态地添加、修改和删除键值对
  3. 键的唯一性:字典中的键是唯一的,每个键都对应一个唯一的值

字典常用方法

查询

  1. in

    注意,这里的 in 是用来判断 key 的。

  2. len()

  3. get(key):获取键所对应的值

    除了 get 方法,还可以使用 字典[键] 的方式获取,不过如果字典中没有这个 ,就会报错。

增 | 改

增和改的方式一样,都是通过赋值来实现。如果是增,只需要给字典中没有的键就行,而改则是对已有的键赋值。例如:

# 增
zd['score'] = 666
print(zd)  # {'name': 'alice', 'age': 16, 'sex': 'girl', 'score': 666}

# 改
zd['name'] = "kitty"
print(zd)  # {'name': 'kitty', 'age': 16, 'sex': 'girl', 'score': 666}

删除

  1. del:删除元素

    del zd['sex']
    print(zd)  # {'name': 'alice', 'age': 16}
    
  2. clear():清空字典

    zd.clear()
    print(zd)  # {}
    

键值

  1. values():获取所有的值

    print(zd.values())  # dict_values(['alice', 16, 'girl'])
    
  2. keys():获取所有的键

    print(zd.keys())  # dict_keys(['name', 'age', 'sex'])
    
  3. items():返回字典里包含的键值对

    print(zd.items())  # dict_items([('name', 'alice'), ('age', 16), ('sex', 'girl')])
    

遍历

不是说共同的东西不再讲了吗,遍历为什么又跑出来了?

那是因为在字典中的遍历有点不一样,它里面有 key 和 value,如果遍历的话, 得到的是 key 还是 value?

验证:

for z in zd:
    print(z)

# 结果:
name
age
sex

结论:遍历得到的是 key 的值,所以如果要得到值,则还需要通过 字典名称[遍历的key] 得到。

集合

集合类型

集合是一种特殊的类型,最特殊的点就在于它是无序不重复的。

特点

  1. 无序性:集合中的元素没有固定的顺序
  2. 不重复性:集合中的元素是唯一的,不会有重复的元素
  3. 可变性:集合是可变的,可以添加、删除或更改元素
  4. 运算方法:集合支持交集(&)、并集(|)、差集(-)等数学运算
  5. 没有长度:由于集合中的元素不重复且无序,所以无法通过内置的len()函数获取集合的长度

格式

# 创建空集合
集合名称 = set()

# 创建集合并添加元素
集合名称 = {值......}

注意,不能直接使用 集合名称 = {} 表示空集合,因为 {} 还用在字典上,默认也表示字典。

集合常用方法

查询

由于集合的无序,没有索引也没有 key,也就不能通过索引来获取里面的值,因此没修改和查询的查找。

这里查询仅仅是查询集合的基本信息:

  1. len()
  2. in

不过都是前面说到过的,不再说了。

添加

  1. add():添加元素

    jh.add('a')
    print(jh)  # {1, 2, 3, 4, 5, 6, 'a'}
    
  2. update():添加元素,添加的是可迭代的对象

    它会将可迭代对象中的每个元素单独添加到集合中:

    jh.update('c')
    print(jh)  # {1, 2, 3, 4, 5, 6, 'c'}
    
    jh.update([11, 12, 13])
    print(jh)  # {1, 2, 3, 4, 5, 6, 11, 12, 13, 'c'}
    

删除

  1. remove():移除元素,当元素不存在会出现 error

    jh.remove(1)
    print(jh)  # {2, 3, 4, 5, 6}
    
  2. discard() :移除元素,当元素不存在,不会出现 error

    jh.discard(2)
    print(jh)  # {1, 3, 4, 5, 6}
    

集合的关系运算符

集合之间运算符主要有求交集(&)、并集(|)和差集(-)。

这几个的含义应该就不用多说了吧,和数学里一样的。咱直接看示例:

# 交集  &
jh2 = {7, 8, 9, 4, 5, 6}
print(jh & jh2)  # {4, 5, 6}

# 并集  |
print(jh | jh2)  # {1, 2, 3, 4, 5, 6, 7, 8, 9}

# 差集  -
print(jh - jh2)  # {1, 2, 3}

.

posted @ 2023-10-09 19:10  笔锋微凉~~  阅读(10)  评论(0)    收藏  举报