day10_无序序列(散列类型)

day10_无序序列(散列类型)

  • 可变【列表、集合、字典】:该类型的值进行修改后,内存地址不变。

  • 不可变【数值类型、字符串、元组】:该类型的内存地址随着值的修改而修改。

一、字典(dict)

字典是键值对(key_value)的方式存在;两者是一种映射关系(一一对应)。

1.1 字典的创建

键值对:{key:value}

本质:用键值对的方式对数据进行储存,对数据起一个解释说明的作用,可读性较好。

格式:

字典名 = {1:1,2:2...}
  • 键是唯一不可变的。【重复的话,前一个值会被后一个值覆盖】
  • 键可以是字符串、数字、元组;值可以是任意数据类型。【因为字典是起解释说明的作用,所以一般用字符串作为键】

示例:

dict1 = {'key1':1,'key2':2}
print(dict1)

#字典中的键重复,前一个值会被后一个值覆盖
dict2 = {1:'value1',
         1:'value2',
         (2,3):'value3'}
print(dict2)

1.2 字典的查询

与前面的有序序列的区别:字典没有下标,无法通过下标查询。

  • 查询单个值

    格式:

    1)字典名[key]【只能查询字典中存在的键】
    2)字典名.get(key)
    

    示例:

    #1)
    dict1 = {'key1':1,'key2':2}
    print(dict1['key1'])
    
    #2)若查询的键不存在,返回值为None
    dict2 = {'key1':1,'key2':2}
    print(dict2.get('key1'))
    print(dict2.get('key3'))
    
  • 查询多个值

    格式:

    1)字典名.keys() #获得字典中所有的键
    2)字典名.values() #获得字典中所有的值
    3)字典名.items() #获得字典中所有的键值对【以元组的形式输出】
    

    示例:

    dict1 = {'key1':1,'key2':2}
    
    print(dict1.keys())
    print(dict1.values())
    print(dict1.items())
    

1.3 键值对的增加与修改

格式:

字典名[key] = value
1)key不存在,即为增加
2)key存在,即为修改

示例:

dict1 = {'key1':1,'key2':2}

dict1['key3'] = 3 #增加
dict1['key1'] = 0 #修改

print(dict1)
  • setdefault()方法

    格式:

    字典名.setdefault(,)
    1)只能用于增加,不能修改
    2)当值没有输入时,默认为None
    3)一次只能增加一个键值对
    

    示例:

    dict1 = {'key1':1,'key2':2}
    
    #1)
    dict1.setdefault('key3',3)
    dict1.setdefault('key1',0)
    print(dict1)
    
    #2)
    dict1.setdefault('key4')
    print(dict1)
    
  • update() 方法

    格式:

    字典名.update({键:值,键:值,...})
    1)既可以增加也可以修改
    2)一次可以增加多个键值对
    

    示例:

    dict1 = {'key1':1}
    
    #1)
    dict1.update({'key2':2}) #增加
    dict1.update({'key1':0}) #修改
    print(dict1)
    
    #2)
    dict1.update({'key3':3,'key4':4})
    print(dict1)
    

1.4 键值对的删除

  • del()方法

    格式:

    del 字典名[key]
    【如果不指定键,会将整个字典删除,无法查询到字典】
    

    示例:

    dict1 = {'key1':1,'key2':2,'key3':3}
    
    del dict1['key2']
    print(dict1)
    
    del dict1
    print(dict1)
    
  • clear()方法

    格式:

    字典.clear() #清空字典
    
  • pop()方法

    格式:

    字典.pop(key) #键必须要写
    
  • popitem()方法

    格式:

    字典名 . popitem()
    
    【随机删除一个键值对(有些版本默认删除最后一个键值对)】
    

二、集合(set)

本质:存储一些非重复性的数据,对数据进行去重。

2.1 集合的创建

格式:

集合名 = {元素1,元素2,元素3,...}
1)集合是无序的,所以不能查询【无序性】
2)元素重复时,只会存入一个【唯一性】
3)创建空集合需要使用set
4)集合中的元素必须是不可变类型

示例:

#创建集合的两种方法
set1 = {'a','b','c'}
set2 = set({'c','d','e'}) #一般不这么创建
print(set1,'\n',set2)

a = set() #空集合
print(type(a))

b = {} #空字典
print(type(b))

2.2 集合的增删改

  • add()增加

    格式:

    集合名.add(元素)
    1)一次只能增加一个
    2
  • remove()删除

    格式:

    集合名.remove(元素) 
    1)一次只能删除一个
    2)删除的元素不存在时,会报错
    
  • discard()删除

    格式:

    集合名.discard(元素)
    1)一次只能删除一个
    2)删除的元素不存在时,不会报错
    
    
  • clear()清空

    格式:

    集合名.clear() 【清空后返回set()】
    

2.3 集合的运算

  • 集合间的运算
符号含义
&交集:两个集合的公共元素
|并集:两个元素的全部元素
-差集:被减集合独有的元素
^对称差集:两个集合中除公共元素外的其他元素(并集 - 交集)

示例:

a = {1,2,3}
b = {2,3,4}

print(a & b)
print(a | b)
print(a - b)
print(a ^ b)  
  • 集合对列表的去重
c = [1,2,3,2,3,4]
c = list(set(c))
print(c)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值