一、学习知识点概要
- 字典
- 定义
- 创建与访问
- 内置方法
- 集合
- 创建
- 访问集合中的值
- 内置方法
- 转换
- 不可变集合
- 序列
- 内置函数
二、学习内容
-
字典
- 定义
字典 是无序的 键:值(`key:value`)对集合,键必须是互不相同的(在同一个字典之内)。
写作:「键值对」-- 键:值 (`key:value`)
- 创建和访问
通过字符串或数值作为`key`来创建字典。
通过构造函数`dict`来创建字典。即`dict()` 创建一个空的字典
注意:一个`key`只能对应一个`value`,多次对一个`key`放入 `value`,后面的值会把前面的值冲掉。
- 内置方法
2.集合
- 创建
- 先创建对象再加入元素。
- 在创建空集合的时候只能使用`s = set()`,因为`s = {}`创建的是空字典。
注意:重复元素在`set`中会被自动被过滤。
- 使用`set(value)`工厂函数,把列表或元组转换成集合。
- 访问集合中的值
- 可以使用`len()`內建函数得到集合的大小。
- 可以使用`len()`內建函数得到集合的大小。
- 可以通过`in`或`not in`判断一个元素是否在集合中已经存在。
- 集合内置的方法
- 集合的转换
例如:
se = set(range())
li = list(se)
tu = tuple(se)
- 不可变集合
- `frozenset([iterable])` 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素。
需要注意的是`frozenset`仍然可以进行集合操作,只是不能用带有`update`的方法
3.序列
- 内置方法
三、学习疑问与解答
练习题
```python
dic = {
'python': 95,
'java': 99,
'c': 100
}
```
用程序解答下面的题目
- 字典的长度是多少
```python
dic = {
'python': 95,
'java': 99,
'c': 100
}
print("字典长度 : %d" % len(dic))
# 字典长度 : 2
```
- 请修改'java' 这个key对应的value值为98
```python
dic = {
'python': 95,
'java': 99,
'c': 100
}
dic2 = {'java': 98}
dic.update(dic2)print(dic) #
```
- 删除 c 这个key
```python
dic = {
'python': 95,
'java': 99,
'c': 100
}
print(dic.pop(c), dic) #
- 增加一个key-value对,key值为 php, value是90
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
dic2 = {'php': '90'}
dic.update(dic2)print(dic) #
```
- 获取所有的key值,存储在列表里
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
print(dic.keys())
# dict_keys(['python','java','c'])
print(list(dic.keys()))
# ['python','java','c']
```
- 获取所有的value值,存储在列表里
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
print(dic.values())
# dict_values(95,99,100'])
print(list(dic.values()))
# [95,99,100]
```
- 判断 javascript 是否在字典中
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
# in 检测键 javascript 是否存在
if 'javascript' in dic:
print("键 javascript 存在")
else:
print("键 javascript 不存在")
#
```
- 获得字典里所有value 的和
```python
dic = {
'python': 95,
'java': 99,
'c': 100}
print(sum(dic.value)) #
- 获取字典里最大的value
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
print(max(dic.value)) #
- 获取字典里最小的value
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
print(min(dic.value)) #
- 字典 dic1 = {'php': 97}, 将dic1的数据更新到dic中
```python
dic = { 'python': 95,
'java': 99,
'c': 100}
dic1 = {'php': 97}
print(dic) #
```
2、字典中的value
有一个字典,保存的是学生各个编程语言的成绩,内容如下
```
data = {
'python': {'上学期': '90', '下学期': '95'},
'c++': ['95', '96', '97'],
'java': [{'月考':'90', '期中考试': '94', '期末考试': '98'}]
}
```
各门课程的考试成绩存储方式并不相同,有的用字典,有的用列表,但是分数都是字符串类型,请实现函数`transfer_score(score_dict)`,将分数修改成int类型
```python
def transfer_score(data):
# your code here
```
**练习题**:
1. 怎么表示只包含⼀个数字1的元组。
```python
num = {1}
print(tuple(num)) # <class 'tuple'>
```
2. 创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。
```python
basket=set()
basket.add('x'')
basket.add('y')
basket.add('z')
print(basket) #
```
3. 列表['A', 'B', 'A', 'B']去重。
```python
lst = ['A', 'B', 'A', 'B]
temp = []
for item in lst:
if item not in temp:
temp.append(item)
print(temp) #
a = set(lst)
print(list(a)) #
```
4. 求两个集合{6, 7, 8},{7, 8, 9}中不重复的元素(差集指的是两个集合交集外的部分)。
```python
a = set(6,7,8')
b = set(7,8,9)
print(a) # {}
print(b) # {}
c = a.difference(b)
print(c) # {}
print(a - b) # {}
print(a) # {}
a.difference_update(b)print(a)
# {}
```
5. 求{'A', 'B', 'C'}中元素在 {'B', 'C', 'D'}中出现的次数。
```python
a = set(['A', 'B', 'C'])
b = set (['B', 'C', 'D'])
for a in len(b)
print(len(a)) #
```
**练习题**:
1. 怎么找出序列中的最⼤、⼩值?
例如:
```python
print(max(1, 2, 3, 4, 5)) # 5
print(max([-8, 99, 3, 7, 83])) # 99
print(max('IloveLsgoGroup')) # v
```
```python
print(min(1, 2, 3, 4, 5)) # 1
print(min([-8, 99, 3, 7, 83])) # -8
print(min('IloveLsgoGroup')) # G
```
2. sort() 和 sorted() 区别
①sort 是应用在 list 上的方法,属于列表的成员方法,sorted 可以对所有可迭代的对象进行排序操作。
②list 的 sort 方法返回的是对已经存在的列表进行操作,而内建函数 sorted 方法返回的是一个新的 list,而不是在原来的基础上进行的操作。
③sort使用方法为ls.sort(),而sorted使用方法为sorted(ls)。
3. 怎么快速求 1 到 100 所有整数相加之和?
- `sum(iterable[, start=0])` 返回序列`iterable`与可选参数`start`的总和。
4. 求列表 [2,3,4,5] 中每个元素的立方根。
```python
i= [2,3,4,5]
for i, in i**3:
print(i)
```
5. 将[‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式。
```python
a =[‘x’,‘y’,‘z’]
b = list(enumerate(a, 1))
print(b) # [(‘x’,1),(‘y’,2),(‘z’,3)]
四、学习思考与总结
这次的知识点具有规律性,虽然多但也比较好记,学习内容也越来越偏向操作,进度适中。最近是考试月了,有些抽不出时间复习之前的内容。