本章我们继续学习python内置数据结构集合和字典。包括集合、frozenset、字典、defaultdict。
集合(set)是一个无序不重复的元素序列,可用于去重。
字典(dict)是另一种可变容器模型,可存储任意类型对象。采用键值对的方式存储,键一般是唯一的,如果重复最后一个键值对会替换前面的,值不需要唯一。
使用大括号 { } 或者 set() 函数创建集合;
注意:创建一个空集合必须用 set() , { } 是用来创建一个空字典。
脑图展示集合内置方法:
图中左边的逻辑关系主要用于查找,右边用于修改集合内容(可类比字符串进行记忆)。
s.add() 添加
a.update() 为集合添加元素
s.discard 有就删除,无则do nothing
s.remove 有就删除,无则报错
实例:
华为笔试编程题: 明明的随机数
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了N个1到1000之间的随机整数(N≤1000),对于其中重复的数字,只保留一个,把其余相同的数去掉,不同的数对应着不同的学生的学号。然后再把这些数从大到小排序,按照排好的顺序去找同学做调查。请你协助明明完成“去重”与“排序”的工作(同一个测试用例里可能会有多组数据,希望大家能正确处理)。
import random
N = int(input("N: "))
nums = set()
for i in range(N): #循环生成随机数并存入nums集合中
num = random.randint(1, 1000)
nums.update([num])
print(sorted(nums,reverse=True)) #排序,reverse=True表示倒序
需求:
1)当集合不需要改变时,
2)当默写API需要不可变对象时,
frozenset 是 set 的不可变版本,因此 set 集合中所有能改变集合本身的方法(如 add、remove、discard、xxx_update 等),frozenset 都不支持;set 集合中不改变集合本身的方法,fronzenset 都支持。
字典(dict)是另一种可变容器模型,可存储任意类型对象。采用键值对的方式存储,键一般是唯一的,如果重复最后一个键值对会替换前面的,值不需要唯一。
dict = {'name':'westos', 'age':18,'city':"xi'an"}
print(dict,type(dict))
print(dict.values()) 查看字典值
print(dict.keys()) 查看字典key值
print(dict.items()) 按照项目查看字典内容
print(dict['name'])
print(dict['age']) 查看特定键的值
for k,v in d.items():
print(f'{k}:{v}')
字典删除
dict.pop('name')
del dict['age'] 删除字典某个值
程序中未指定某个key值,提供默认属性,避免报错。
普通设定方式:
dict = {'name':'westos', 'age':18,}
dict['city'] = "xi'an"
print(dict)
dict['city'] = "Beijing"
print(dict)
dict = {'name':'westos', 'age':18,}
dict.setdefault('city',"xi'an")
print(dict)
dict.setdefault('city',"Beijing")
print(dict)
当存在默认值后,key对应的值将不会改变。
defaultdict的作用2:
在使用defaultdict的时候,也可以指定创建文件类型
from collections import defaultdict
d = defaultdict(int)
d['num'] = 1
print(d)
d= defaultdict(set)
d['media'].add('haha')
print(d)
d= defaultdict(list)
d['media'].append('haha')
print(d)
数据结构总结:
序列特性:索引、切片、连接操作符(+)、重复操作符(*)、成员操作符等。
word文档不是纯文本文件,是二进制程序,不安装office打不开。