Python学习笔记(八):集合、字典的操作

一、集合

  • 集合内数据无序,即无法使用索引和分片
  • 集合内部数据元素具有唯一性,可以用来排除重复数据
  • 集合内的数据,字符串,整数,浮点数,元组,冰冻集合等,不能是列表和一般集合,即内部只能放置可哈希数据(即不可变类型)
set1 = {'a', 2, 2.5, (2,3,'a')}

1.集合的简单操作

  • 集合的序列操作
>>> 'a' in set1
True
>>>'b' not in set1
True
  • 集合的遍历操作
>>>for i in set1:
          print(i, end=' ')
2 2.5 a (2, 3, 'a')
# 带元组的集合遍历
>>>s = {(1,2,3),('a','b','c'),(4,5,6)}
>>>for l,m,n in s:
       print(l,'--',m,'--',n)
4 -- 5 -- 6
a -- b -- c
1 -- 2 -- 3
  • 集合会过滤重复的元素
>>>s={1,2,2,5,6,5,4,4}
>>>s
{1, 2, 4, 5, 6}

2.集合函数

  • len(s), max(s), min(s) 函数与基本函数一致
  • set(l): 生成集合
>>>l = [1,2,3,5,2,6,1]
>>>s = set(l)
>>>s
{1,2,5,3,6}
  • s.add(x): 向集合中添加元素
  • s.clear(): 原地清空集合的数据
  • s.copy(): 拷贝集合产生新的集合,对副本的操作不影响原来的集合
  • s.remove(x): 原地移除指定元素,如果指定元素不存在,则报错
  • s.discard(x): 原地移除指定元素,如果指定元素不存在,也不会报错
  • s.pop(): 随机移除一个元素
  • s1.intersection(s2): 求交集函数
  • s1.difference(s2): 求差集
  • s1.union(s2): 求并集
>>>s1 = {1,2,3,4,5,6}
>>>s2 = {5,6,7,8,9}
>>>s1.intersection(s2)
{5,6}
>>>s1.difference(s2)
{1,2,3,4}
>>>s1.union(s2)
{1, 2, 3, 4, 5, 6, 7, 8, 9}
  • s1.issubset(s2): 检查集合 s1 是否是集合 s2 的子集,返回布尔值
  • s1.issuperset(s2): 检查集合 s1 是否是集合 s2 的超集,返回布尔值
  • 集合的数学操作:
>>>s1 = {1,2,3,4,5,6}
>>>s2 = {5,6,7,8,9}
>>>s1 - s2
{1,2,3,4}
>>>s1 + s2 #不能执行加法操作
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/IPython/core/interactiveshell.py", line 2882, in run_code
    exec(code_obj, self.user_global_ns, self.user_ns)
  File "<ipython-input-34-07ecabcb1b41>", line 1, in <module>
    s1 + s2
TypeError: unsupported operand type(s) for +: 'set' and 'set'

3.冰冻集合 frozenset

  • 冰冻集合是不能进行任何修改(包括以上所有集合操作)的集合,是一种特殊的集合
>>>s = frozenset(('a','hello',3))
>>>s
frozenset({3, 'a', 'hello'})

二、字典

  • 字典是一种组合数据,没有顺序的组合数据,数据以键值对形式出现
# 字典的构造方式
>>> dict1 = {}
>>> dict2 = dict()
>>> dict3 = {"one":1,"two":2,"three":3}
>>> dict4 = dict(one=1,two=2,three=3)
>>> dict5 = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> dict6 = dict([('two', 2), ('one', 1), ('three', 3)])
>>> dict7 = dict({'three': 3, 'one': 1, 'two': 2})
>>> dict3 == dict4 == dict5 == dict6 == dict7 
True

1.字典特征

  • 字典是序列类型,但是是无序序列,所以没有分片和索引
  • 字典中的数据每个都有键值对组成,即k-v对
    key: 必须是可哈希的值,比如int,string,float,tuple, 但是,list,set,dict 不行
    value: 任何值

2.字典操作

  • 通过字典的键值key访问或更改value值
>>> dict1 = {"one":1,"two":2,"three":3}
>>>dict1['one']
1
>>>dict1['one'] = 'one'
>>dict1
{'one': 'one', 'three': 3, 'two': 2}
  • 删除字典中的元素
>>> del dict1['one']
>>>dict1
{'three': 3, 'two': 2}
  • 成员检测 in / not in
#成员检测的是 key 的内容
>>> if 'two' in dict1:
           print('True')
True
  • 遍历字典 for
>>> dict1 = {'one':1,'two':2}
>>> for k in dict1.keys():    # 按键值遍历
>>>     print(k,end=' ')
one two
>>> for v in dict1.values():   # 只访问字典的值
>>>     print(v,end=' ')
1 2
>>> for k,v in dict1.items():
>>>     print(k,v)
one 1 two 2

3.字典函数

  • len(d)、max(d)、min(d)、dict(d)、d.clear()
  • d.get(k): 按指定的键值 k 返回相应的字典值,如果没有这个 k ,可以指定返回的默认值
>>> dict1 = {'one':1,'two':2}
>>>dict1.get('one')
1
>>>dict1.get('three', 'meiyou')
'meiyou'
  • d.fromkeys: 用指定的序列作为键,用一个值作为字典所有键的值
>>> l = ["eins", "zwei", "drei"]
>>> d = dict.fromkeys(l, "hahahahahah")
>>> print(d)
{'eins': 'hahahahahah', 'zwei': 'hahahahahah', 'drei': 'hahahahahah'}

4.字典推导式

  • 字典推导可以从任何以键值对作为元素的可迭代对象中构建出字典。
>>> codes = [(86,'China'),(91,'India'),(1,'USA'),(55,'Brazil'),(81,'Japan')]
>>> dict01 = dict(codes)
>>> dict01
{86: 'China', 91: 'India', 1: 'USA', 55: 'Brazil', 81: 'Japan'}
>>> dict02 = {country: code for code, country in codes}
>>> dict02
{'China': 86, 'India': 91, 'USA': 1, 'Brazil': 55, 'Japan': 81}
>>> dict03 = {code: country.upper() for country, code in dict02.items()}
>>> dict03
{86: 'CHINA', 91: 'INDIA', 1: 'USA', 55: 'BRAZIL', 81: 'JAPAN'}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值