Python——字典与集合的基本使用

字典

字典的概述:
字典是一个无序的,可以修改的,元素呈键值对的形式,以逗号分割的,以大括号包围的数据类型;
字典和列表一样,可以存储多个数据,但是字典中的值并没有什么特殊顺序;列表中,查找某个元素时,是通过下标进行的,但是如果下标很多,查找元素不方便,这时就需要用到字典。
字典的每个元素由两部分组成,键:值。例如:‘name’:‘hu’ , name为键,hu为值。

字典是Python基础数据类型当中唯一一个映射关系的数据类型;

先来定义一个字典:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}

在定义的字典中,每一个键对应一个相应的值,那么键与值是不是只能一对一呢?可以试着看下:

message = {'name':'jake','hu','age':19,'love':'kongfu'}#在键name后面加上'hu',使其对应两个值
print(message)

看结果:

File "<ipython-input-4-39b28704af5a>", line 1
    message = {'name':'jake','hu','age':19,'love':'kongfu'}#在键name后面加上'hu',使其对应两个值
                                 ^
SyntaxError: invalid syntax

SyntaxError: invalid syntax语法错误,是一种编译错误,python编译器在处理的时候,发现语法不规范,发出编译错误。所以,这样看来,键与值是一一对应的关系,键后面只能有一个值,但是这个值可以是字符串,可以是数字,那么是否可以为列表,元组呢?
实践是检验真理的唯一标准,话不多说,上代码:

message = {'name':['jake','hu'],'age':19,'love':'kongfu'}#在键后面用列表来存储值,这样在列表中就可以存储多个’值‘
print(message)
{'name': ['jake', 'hu'], 'age': 19, 'love': 'kongfu'}

如果将元组放在值的位置,同样会报错,具体原因这里不做阐述。
获取字典中元素

  1. 利用键名

字典中的元素都是通过键名来访问的,当我们想要获取某一个值,只需要指出对应的键名,就可以得到相应的值。例如:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message['name'])
print(message['age'])
jake
19
  1. get方法
    例如:通过get()函数来对字典中值进行查找
message = {'name':'jake','age':19,'love':'kongfu'}
print(message.get('name'))
print(message.get('age'))
print(message.get('favorite'))#注意:get方法如果没有找到相应的值,就会输出None,后面也可以带默认的值。
jake
19
None

字典中元素的添加修改
在字典中,想要添加键值对,采用直接添加的方式,直接将键和值定义在这个字典中就可以了。例如:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
message['height'] = 182
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
{'name': 'jake', 'age': 19, 'love': 'kongfu', 'height': 182}

修改字典中的值也是直接指出键名,然后将新的值赋给这个键名就可以了。例如:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
message['age'] = 21
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
{'name': 'jake', 'age': 21, 'love': 'kongfu'}

字典中元素的删除

  1. 字典中对键值对的删除,是用del进行直接删除
message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
del message['age']
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
{'name': 'jake', 'love': 'kongfu'}
  1. pop(),弹出,返回并删除对应指定键的值
message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
num = message.pop('age')#弹出,并删除指定键的值
print(num)
print(message)

{'name': 'jake', 'age': 19, 'love': 'kongfu'}
19
{'name': 'jake', 'love': 'kongfu'}
  1. 随机弹出一个键值元组(随机的原因是因为字典无序)
message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
num = message.popitem()#随机弹出一个键值元组
print(num)
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
('love', 'kongfu')
{'name': 'jake', 'age': 19}
  1. clear 清空字典
message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
message.clear()
print(message)
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
{}

Python字典的特点

  1. 字典是无序的,所以字典没有索引值;
  2. 字典没有索引值,所以字典以键取值,(字典的键相当于列表的索引);
  3. 字典以键取值,所以字典的键唯一且不可修改;
  4. 字典的键不可修改,所以列表和字典等可变类型的数据不可以给字典做键。

字典中的一些常见操作

message = {'name':'jake','age':19,'love':'kongfu'}
print(message.keys())#返回一个包含字典所有key的列表
print(message.values())#返回一个包含字典所有value的列表

#设置默认,如果键存在,返回值,如果键不存在,创造键,值默认为None,值也可以自定义setdefault(key,default=None)
print(message.setdefault('play'))

#以字典的格式更新指定键内容,若不存在,则创建键和值
print(message.update({'play':'pingpang'}))
print(message)

print(message.items())#返回字典的键值以元组的方式

#测量字典,键值对的个数
print(message)
print(len(message))#测量字典,键值对的个数
dict_keys(['name', 'age', 'love'])
dict_values(['jake', 19, 'kongfu'])
None
None
{'name': 'jake', 'age': 19, 'love': 'kongfu', 'play': 'pingpang'}
dict_items([('name', 'jake'), ('age', 19), ('love', 'kongfu'), ('play', 'pingpang')])
{'name': 'jake', 'age': 19, 'love': 'kongfu', 'play': 'pingpang'}
4

如何判断一个值是否再字典中?如下:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message)

```python
#判断指定的键是否在字典当中,在,返回True,否则,返回False
'name' in message
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
True

字典的遍历 通过for … in …:的语法结构,我们可以遍历字符串、列表、元组、字典等数据结构。例如:

message = {'name':'jake','age':19,'love':'kongfu'}
print(message)
for i in message:#遍历键
    print(i)
    
for j in message.values():#遍历值
    print(j)
    
{'name': 'jake', 'age': 19, 'love': 'kongfu'}
name
age
love
jake
19
kongfu

集合

集合的定义:集合是一种无序不重复的元素集合,集合与之前元素列表类似,可以存储多个数据,但是这些数据是不重复的。

可以使用大括号 { } 或者 set() 函数创建集合,注意:创建一个空集合必须用 set() 而不是 { },因为 { } 是用来创建一个空字典。
集合对象还支持交集(intersection),差集(difference)、并集和对称差集(sysmmetric_difference)

s1 = {1,2,3,4,5,5}#创建一个集合
print(s1)#通过打印可以看出集合里面没有相同的元素
s2 = set('34567')#通过set()函数创建集合,无序
s3 = set('1234')
print(s2)
print(s3)

#集合还支持交集,差集,并集和对称差集
print(s2&s3)#交集:&两个集合的公共部分
print(s2|s3)#并集:|两集合合并,没有重复元素
print(s2-s3)#差集:-只有前项有的元素,不存在后项中的元素。
print(s2^s3)#对称差集(^):只存在a或者b中,但是不会同时出现在二者中

type(s1)#查看数据类型
{1, 2, 3, 4, 5}
{'6', '7', '5', '4', '3'}
{'4', '1', '3', '2'}
{'4', '3'}
{'6', '1', '7', '2', '5', '4', '3'}
{'5', '6', '7'}
{'6', '7', '2', '5', '1'}
set

集合的增添删除操作

s1 = {1,2,3,4,5}
print(s1)

# add(),为集合无规律添加元素
s1.add('jk')
print(s1)

# update()也可以添加元素,且参数可以是不同类型,并用逗号分隔开
s1.update('8','9',[6,7])#不能直接加int类型,否则报错
print(s1)

#remove(),删除集合中的指定元素,当指定的元素不存在的时候会报错
s1.remove(1)
print(s1)

#discard(),是删除集合中的指定元素,且如果元素不存在的时候,不会报错
s1.discard('jk')
s1.discard('aj')
print(s1)

#pop(),无逻辑删除元素
s1.pop()
print(s1)
{1, 2, 3, 4, 5}
{1, 2, 3, 4, 5, 'jk'}
{1, 2, 3, 4, 5, 'jk', '8', 6, 7, '9'}
{2, 3, 4, 5, 'jk', '8', 6, 7, '9'}
{2, 3, 4, 5, '8', 6, 7, '9'}
{3, 4, 5, '8', 6, 7, '9'}

以上就是关于集合与字典的一些日常基本操作了。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值