大数协python训练营打卡笔记Task05

一、学习知识点概要

(一)字典(可变类型与不可变类型、字典的定义、创建和访问字典、字典的内置方法)

(二)集合(创建集合、访问集合中的值、集合的内置方法、集合的转换、不可变集合)

(三)序列(针对序列的内置函数)



二、学习内容

(一)字典

①判断可变类型与不可变类型:

【方法】

麻烦方法:用 id(X) 函数,对 X 进行某种操作,比较操作前后的 id,如果不一样,则 X 不可变,如果一样,则 X 可变。

便捷方法:用 hash(X),只要不报错,证明 X 可被哈希,即不可变,反过来不可被哈希,即可变。

  • 序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。

  • 字典是 Python 唯一的一个 映射类型,字符串、元组、列表属于序列类型

  • 数值、字符和元组 都能被哈希,因此它们是不可变类型。

  • 列表、集合、字典不能被哈希,因此它是可变类型。

 ②字典的定义

字典 是无序的 键:值(key:value对集合,键必须是互不相同的(在同一个字典之内)。

  • dict 内部存放的顺序和 key 放入的顺序是没有关系的。

  • dict 查找和插入的速度极快,不会随着 key 的增加而增加,但是需要占用大量的内存。

字典 定义语法为{元素1,元素2,元素3……,元素n}

  • 其中每一个元素是一个「键值对」-- 键:值(key:value)

  • 关键点是「大括号 {}」,「逗号 ,」和「冒号 :」

  • 大括号 -- 把所有元素绑在一起

  • 逗号 -- 将每个键值对分开

  • 冒号 -- 将键和值分开

 ③创建和访问字典

(1)通过字符串或数值作为key来创建字典。

注意:如果我们取的键在字典中不存在,会直接报错KeyError。

(2)通过元组作为key来创建字典,但一般不这样使用。

(3)通过构造函数dict来创建字典

1.dict()创建一个空字典【通过key直接把数据放入字典中,但一个key只能对应一个value,多次对一个key放入value,后面的值会把前面的值冲掉。 】

2.dict(mapping)

3.dict(**kwargs)【这种情况下,键只能为字符串类型,并且创建的时候字符串不能加引号,加上就会直接报语法错误。 】

④字典的内置方法

(二)集合

集合与字典类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。(注意:key为不可变类型,即可哈希的值。)

①集合的创建

1.先创建对象再加入元素;

2.在创建空集合的时候只能使用s=set(),因为s={}创建的是空字典。

basket = set()
basket.add('apple')
basket.add('banana')
print(basket)  # {'banana', 'apple'}

 3.直接把一堆元素用{大括号}括起来;

 4.重复元素在set中会被过滤。

 5.使用set(value)工厂函数,把列表或元组转换成集合。

6.去掉列表中重复的元素

集合特点:无序和唯一。由于set存储的是无序集合,所以不能创建索引或执行切片(slice)操作,也没有键(keys)可获取集合中元素的值,但可判断某元素是否在集合中。

②访问集合中的值

1.len()内建函数:得到集合的大小

2.for:把集合中的数据一个个读取出

3.in或not in:判断某元素是否在集合中

③集合的内置方法

 ④集合的转换

 ⑤不可变集合

frozenset([iterable])返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。

(三)序列

针对序列的内置函数

三、学习问题与解答(自己遇到的问题+课后题)

(一)字典

1、字典基本操作

dic = {
    'python': 95,
    'java': 99,
    'c': 100
    }
#字典的长度是多少
print(len(dic))

#请修改'java' 这个key对应的value值为98
del dic['java']
dic.setdefault('java',98)
print(dic)

#删除 c 这个key
del dic['c']
print(dic)

#增加一个key-value对,key值为 php, value是90
dic2 = {'php' : 90}
dic.update(dic2)
print(dic)

#判断 javascript 是否在字典中
if 'javascript' in dic:
    print('键javascript存在')
else:
    print('键javascript不存在')

#字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中
dic1 = {'php' : 97}
dic.update(dic1)
print(dic)

[未解决的问题]

 #获取所有的key值,存储在列表里

#获取所有的value值,存储在列表里

#获得字典里所有value 的和

#获取字典里最大的value

#获取字典里最小的value

未能单独取出key或value

2.字典中的value

data = {
        'python': {'上学期': '90', '下学期': '95'},
        'c++': ['95', '96', '97'],
        'java': [{'月考':'90', '期中考试': '94', '期末考试': '98'}]
        }

思考:分别取出key和value

(二)集合

1.怎么表示只包含⼀个数字1的元组。

basket = set()
basket.add(1)
print(basket)

2.创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。

basket = set()
basket.add('x')
basket.add('y')
basket.add('z')
print(basket)

3. 列表['A', 'B', 'A', 'B']去重

s = set(['A','B','A','B'])
print(s)

4.求两个集合{6, 7, 8},{7, 8, 9}中不重复的元素(差集指的是两个集合交集外的部分)。

a= set('678')
b= set('789')
c=a.difference(b)
print(c)
#{'6'}

出错了……答案应该是6和9,不过还没有找到改进的方法。

(三)序列

序列中的最大最小值:max(sub)和min(sub)

四、学习思考与总结

本次学习加笔记时间大概在六个小时左右,时间比较仓促,有很多课后题还来不及深入思考和改进。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值