python系列 - 字典和集合

概念

  • 字典dict:由一系列键(key)和值(value)配对组成的元素的集合
  • 集合set:没有键和值的配对,是一系列无序的、唯一的元素组合

创建方式

d1 = {'name': 'jason', 'age': 20, 'gender': 'male'}
d2 = dict({'name': 'jason', 'age': 20, 'gender': 'male'})
d3 = dict([('name', 'jason'), ('age', 20), ('gender', 'male')])
d4 = dict(name='jason', age=20, gender='male') 
d1 == d2 == d3 ==d4
True
s1 = {1, 2, 3}
s2 = set([1, 2, 3])
s1 == s2
True

🎉ATTENTION:

  • python中字典和集合的键和值都可以是混合类型(例如:s = {1,'hello',5.0})

元素访问方式

字典访问可以直接索引键,例如:

d = {'name': 'jason', 'age': 20}
print(d['name'])
print(d['location'])

运行结果如下:

🎉ATTENTION:

  • 访问字典内不存在的元素会直接抛出异常

也可以通过函数get(key,default)来进行索引,如果键不存在,调用get()函数可以返回一个默认值,例如:

d = {'name': 'jason', 'age': 20}
print(d.get('name'))
print(d.get('location', '这是自定义的默认值'))

运行结果如下:

🎉可以看出,返回的默认值为我们自定义的默认值

以上为字典内元素的访问方式,我们再来看看集合

🎉ATTENTION:

  • 集合不支持索引!!!
  • 想要判断元素在不在集合内,可以用xx in dict/set来判断,参考下栗👇👇👇
s = {1, 2, 3}
print(1 in s)
print(10 in s)

运行结果:

d = {'name': 'jason', 'age': 20}
print('name' in d)
print('location' in d)

运行结果:

元素操作

增、删、改

字典和集合都支持增加、删除、更新等操作
首先是字典,字典内对元素进行增加和更新,直接操作元素就可以了👇👇👇

d = {'name': 'mooii', 'age': 18}
d['gender'] = 'female' # 增加元素对'gender': 'female'
d['bir'] = '2004-06-06' # 增加元素对'bir': '2004-06-06'
print(d)
d['gender'] = 'male' # 更新键'gender'对应的值
print(d)
d.pop('gender') # 删除键为'gender'的元素对
print(d)

运行结果:

集合内对元素进行增加、更新、删除,参考栗子👇👇👇

s = {1, 2, 3}
s.add(4) # 增加元素4到集合
print(s)
s.remove(4) # 从集合中删除元素4
print(s)

运行结果如下:

🎉ATTENTION:

  • 集合的pop()操作删除的是集合内的最后一个元素,但是集合本身是无序的(也就是说,我们无法直观地知道会删除哪个元素),慎用pop操作!!!

排序

对于字典的排序,我们可以根据键或值进行升序/降序操作,例如:

d = {'b': 1, 'a': 2, 'c': 10}
d_sorted_by_key = sorted(d.items(), key=lambda x: x[0]) # 根据字典键的升序排序
d_sorted_by_value = sorted(d.items(), key=lambda x: x[1]) # 根据字典值的升序排序
## 运行结果
d_sorted_by_key
[('a', 2), ('b', 1), ('c', 10)]
d_sorted_by_value
[('b', 1), ('a', 2), ('c', 10)]

🎉ATTENTION:

  • 字典进行排序操作后,返回的是一个列表,列表中的每个元素是由原字典的键和值组成的元组

对于集合的排序,直接调用sorted()即可,返回的结果为排好序的列表,参考下例:

s = {3, 4, 2, 1}
sorted(s) # 对集合的元素进行升序排序
#排序后的结果为
[1, 2, 3, 4]
posted @ 2022-05-25 22:25  莫伊101  阅读(47)  评论(0编辑  收藏  举报