Python列表、元组、字典及集合
- 1 字典
- 1.1 字典的创建
- 1.2 字典的特性
- 1.3 字典的常用方法
- 1.3.1 查看字典
- 1.3.2 增加和修改
- 1.3.3 删除
- 1.4 遍历字典
- 2 集合
- 2.1 集合的创建
- 2.2 集合的特性
- 2.3 集合的常用操作
- 2.3.1 添加集合元素
- 2.3.2 删除集合的元素
- 2.3.3 查看集合元素
- 2.4 defaultdict:默认字典
- 2.5 练习
1 字典
字典是一系列键—值对,每个键都与一个值相关联,可以通过键来访问与之相关联的值
1.1 字典的创建
- 字典用放在花括号{}中的一系列键—值对表示,键—值对是两个相关联的值。指定键时,Python将返回与之相关联的值。键和值之间用冒号分隔,而键—值对之间用逗号分隔:
dick={key1:value1,key2:value2}
dict1={'name':'tom','age':12}
print(dict1,type(dict1))
输出:
{'name': 'tom', 'age': 12} <class 'dict'>
1.2 字典的特性
- 不支持+,*, index, slice(因为集合无序不重复的)
- 支持成员操作符in和not in(判断是否为所有key值的成员)
dict1={'name':'tom','age':12}
print('name' in dict1) ##True
print('tom' in dict1) ##False
1.3 字典的常用方法
1.3.1 查看字典
- 查看所有: keys, values, items
- 查看局部: d[key], d.get(key), d.get(key, default-value)
dict1={'name':'tom','age':12}
print(dict1) ##{'name': 'tom', 'age': 12}
# 查看字典所有的key值
print(dict1.keys()) ##dict_keys(['name', 'age'])
# 查看字典所有的value值
print(dict1.values()) ##dict_values(['tom', 12])
查看字典所有的key-value值(item元素)
print(dict1.items()) ##dict_items([('name', 'tom'), ('age', 12)])
# 查看key对应的vlaue值,如果不存在会报错
dict1={'name':'tom','age':12}
print(dict1['name']) ##tom
print(dict1['class']) ##报错
# get()查看key对应的vlaue值,如果不存在返回None
print(dict1.get('name')) ##tom
print(dict1.get('class')) ##None
# get()查看key对应的vlaue值, 如果存在则返回,如果不存在则返回默认值.
print(dict1.get('class','linux')) ##linux
# get()查看key对应的vlaue值,默认值不生效
print(dict1.get('name','jerry')) ##tom
1.3.2 增加和修改
dict1={'name':'tom','age':12}
# key不存在就添加
dict1['class']='linux'
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}
dict1={'name':'tom','age':12}
# key存在则修改value值
dict1['name']='jerry'
print(dict1) ##{'name': 'jerry', 'age': 12}
- s.setdefault():key不存在就添加;key存在,则什么也不做
dict1={'name':'tom','age':12}
dict1.setdefault('class','linux')
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}
dict1.setdefault('class','linux')
print(dict1) ##{'name': 'tom', 'age': 12, 'class': 'linux'}
1.3.3 删除
dict1={'name':'tom','age':12}
dict1.pop('name')
print(dict1) ##{'age': 12}
dict1={'name':'tom','age':12}
del dict1['name']
print(dict1) ##{'age': 12}
1.4 遍历字典
(1) 默认情况下,字典只会遍历key值
dict1={'name':'tom','age':12}
for i in dict1:
print(i)
输出:
name
age
(2)遍历字典的key
dict1={'name':'tom','age':12}
for i in dict1.keys():
print(i)
输出:
name
age
(3)遍历字典的value
dict1={'name':'tom','age':12}
for i in dict1.values():
print(i)
输出:
tom
12
(4)遍历字典的key和value
dict1={'name':'tom','age':12}
for i in dict1.items():
print(i)
输出:
('name', 'tom')
('age', 12)
dict1={'name':'tom','age':12}
for k,v in dict1.items():
print(k,v)
输出:
name tom
age 12
2 集合
2.1 集合的创建
- 集合(set)是一个无序的不重复元素序列,集合是可变的数据类型
- 集合的元素必须时不可变数据类型
- 可以使用大括号 { } 或者 set() 函数创建集合
- 注意:
创建一个空集合必须用 set() 而不是 { }
,因为 { } 是用来创建一个空字典
set1=set()
set2={}
set3={1,2,4,'a'}
print(set1,type(set1)) ##set() <class 'set'>
print(set2,type(set2)) ##{} <class 'dict'>
print(set3,type(set3)) ##{1, 2, 4, 'a'} <class 'set'>
set1={1,2,4,[1,4]}
print(set1,type(set1)) ##TypeError: unhashable type: 'list'
2.2 集合的特性
- 不支持+,*, index, slice(因为集合无序不重复的)
- 支持成员操作符in和not in
set1={1,2,4}
print(1 in set1) ##True
2.3 集合的常用操作
2.3.1 添加集合元素
-
set1.add()
:将元素添加到集合 set1 中,如果元素已存在,则不进行任何操作
set1={1,2,4}
set1.add(7)
print(set1) ##{1, 2, 4, 7}
set1={1,2,4}
set1.add(2)
print(set1) ##{1, 2, 4}
-
set1.update()
:添加多个元素,且参数可以是列表,元组,字典等
set1={1,2,4}
set1.update({1,5,7})
print(set1) ##{1, 2, 4, 5, 7}
2.3.2 删除集合的元素
-
set1.remove(x)
:将set1集合中的x元素删除,如果元素不存在会报错
set1={1,2,4}
set1.remove(2)
print(set1) ##{1, 4}
##删除集合不存在的元素
set1={1,2,4}
set1.remove(3)
print(set1) ##报错
-
set1.discard()
:移除集合中的元素,如果元素不存在,也不会报错
set1={1,2,4}
set1.discard(2)
print(set1) ##{1, 4}
##删除集合中不存在的元素不会报错
set1={1,2,4}
set1.discard(3)
print(set1) ##{1, 2, 4}
- 随机删除集合中的一个元素,集合为空则报错:
set1.pop()
set1={1,2,4}
set1.pop()
print(set1) ##{2, 4}
- 清空集合:
set1.clear()
set1={1,2,4}
set1.clear()
print(set1) ##set()
2.3.3 查看集合元素
- 差集: s1 - s2
- 交集: s1 & s2
- 对称差分: s1 ^ s2
- 并集: s1 | s2
s1={1,2,3,5}
s2={1,3,5,7}
print(s1-s2) ##差集{2}
print(s1&s2) ##交集{1, 3, 5}
print(s1^s2) ##对称差分{2, 7}
print(s1|s2) ##并集1 2, 3, 5, 7}
- 判断是不是子集:s.issubset(s1)
- s1.isdisjoint():判断两个集合是否包含相同的元素
s1={1,5}
s2={1,3,5,7}
print(s1.issubset(s2)) ##True
print(s1.isdisjoint(s2)) ##False
2.4 defaultdict:默认字典
- 如果访问字典中不存在的键,会引发KeyError异常
d={"age":12}
print(d['name']) ##KeyError: 'name'
- defaultdict的作用是在于,当字典里的key不存在但被查找时,返回的不是keyError而是一个默认值
# 默认字典,设置默认value为int
from collections import defaultdict
d=defaultdict(int)
print(d['name']) ## 0
# 默认字典,设置默认value为列表
from collections import defaultdict
d=defaultdict(list)
d['root'].append('tom')
d['user'].extend(['lily','tony'])
print(d)
#defaultdict(<class 'list'>, {'root': ['tom'], 'user': ['lily', 'tony']})
2.5 练习
import random
n = int(input("输入n:"))
s=set()
for i in range(n):
s.add(random.randint(1,1000))
print(sorted(s,reverse=True))