1.字典
对于字典这个数据类型,可能有点陌生。其实它是 键:值(key:value)对集合。结合实际想一想,查新华字典的时候,是不是我们需要查找它的拼音或者偏旁部首来查找某一个字。其中拼音或者偏旁部首就是键值,而所要查找的字便是键值对应的值。
多个键可以对应一个值,但是键不能有重复的。结合真实的字典想一想便能很好的理解了。
1.1 字典的创建
注意字典的创建,是用大括号 { } 括起来的
#创建模式1:键可为数值或字符串
dic1 = {1: 'one', 2: 'two', 3: 'three'}
print(dic1) # {1: 'one', 2: 'two', 3: 'three'}
dic2 = {'rice': 35, 'wheat': 101, 'corn': 67}
print(dic2) # {'wheat': 101, 'corn': 67, 'rice': 35}
#创建模式2:键可为元组
dic = {(1, 2, 3): "Tom", "Age": 12, 3: [3, 5, 7]}
print(dic[(1,2,3)]) # Tom
#创建模式3:通过创建一个空的字典,再后续添加
dic = dict()
dic['a'] = 1
dic['b'] = 2
dic['c'] = 3
print(dic)
# {'a': 1, 'b': 2, 'c': 3}
#创建模式4:通过创建元组或者列表的形式
dic1 = dict([('apple', 4139), ('peach', 4127), ('cherry', 4098)]) #列表[]
print(dic1) # {'cherry': 4098, 'apple': 4139, 'peach': 4127}
dic2 = dict((('apple', 4139), ('peach', 4127), ('cherry', 4098))) #元组()
print(dic2) # {'peach': 4127, 'cherry': 4098, 'apple': 4139}
#创建方式5:通过 name=value 的方式
dic = dict(name='Tom', age=10)
print(dic) # {'name': 'Tom', 'age': 10}
dic = dict('1'='Tom', age=10)
print(dic) # 报错
1.2字典的内置方法
关于获取的
名字 | 描述 |
---|---|
X.values() | 获取字典中的所有值 |
X.keys() | 获取字典中的所有键 |
X.items() | 以列表返回可遍历的 (键, 值) 元组数组 |
dic = {'Sex': 'female', 'Age': 7, 'Name': 'Zara','School':'LA','home':'QCL_1314'}
print(dic.keys()) #dict_keys(['Sex', 'Age', 'Name', 'School', 'home'])
print(dic.values()) #dict_values(['female', 7, 'Zara', 'LA', 'QCL_1314'])
print(list(dic.items())) #[('Sex', 'female'), ('Age', 7), ('Name', 'Zara'), ('School', 'LA'), ('home', 'QCL_1314')]
for key,i in dic.items():
print(key,i,sep=':',end=' ') #Sex:female Age:7 Name:Zara School:LA home:QCL_1314
关于指定查找
名字 | 描述 |
---|---|
X.get(key, default=None) | 返回指定键的值,如果值不在字典中返回默认值 |
X.setdefault(key, default=None) | 键不存在于字典中,将会添加键并将值设为默认值。 |
dic = {'Name': 'Lsgogroup', 'Age': 27}
print("Age 值为 : %s" % dic.get('Age')) # Age 值为 : 27
print("Sex 值为 : %s" % dic.get('Sex', "NA")) # Sex 值为 : NA
dic = {'Name': 'Lsgogroup', 'Age': 7}
print("Age 键的值为 : %s" % dic.setdefault('Age', None)) # Age 键的值为 : 7
print("Sex 键的值为 : %s" % dic.setdefault('Sex', None)) # Sex 键的值为 : None
关于删除的
名字 | 描述 |
---|---|
X.pop(key[,default]) | 删除字典给定键 key 所对应的值,返回值为被删除的值。若key不存在,则返回 default 值 |
X.popitem() | 随机返回并删除字典中的一对键和值,如果字典已经为空,却调用了此方法,就报出KeyError异常 |
X.dict[key] | 删除字典给定键 key 所对应的值 |
X.clear() | 用于删除字典内所有元素 |
dic1 = {1: "a", 2: [1, 2]}
print(dic1.pop(1), dic1) # a {2: [1, 2]}
# 设置默认值,必须添加,否则报错
dic1 = {1: "a", 2: [1, 2]}
print(dic1.pop(1), dic1) # a {2: [1, 2]}
# 设置默认值,必须添加,否则报错
print(dic1.pop(3, "nonekey"), dic1) # nonekey {2: [1, 2]}
del dic1[2]
print(dic1) #{}
dic1 = {1: "a", 2: [1, 2],3:'CS'}
print(dic1.popitem()) # (3, 'CS')
print(dic1) # {1: 'a', 2: [1, 2]}
dic1.clear()
print(dic1) #{}
2.集合
在字典的基础上,去掉值的内容,保留键,就是集合了。因为键是不能重复的,同理集合中的值是不会重复的。即使在创建时,赋值了多个相同的值,写入的都是不重复的值。
num = {1, 2, 3, 4,3,4}
print(num) # {1, 2, 3, 4}
print(type(num)) # <class 'set'>
num = {1:'name', 2:'age', 3:'sex', 4:'grade'}
print(type(num)) # <class 'dict'>
2.1集合的创建
集合分两种:1.创建后可添加删除(上述例子便是) 2.创建后不可添加删除
名字 | 描述 |
---|---|
frozenset([iterable]) | 返回一个冻结的集合,冻结后集合不能再添加或删除任何元素 |
b = frozenset('marry')
print(b)
# frozenset({'r', 'y', 'm', 'a'})
普通创建
#创建模式1:创建空的集合,再使用add()方法添加
basket = set()
basket.add('apple')
basket.add('banana')
print(basket) # {'banana', 'apple'}
#创建模式2:直接创建
basket = {'apple', 'orange', 'apple', 'pear', 'orange', 'banana'}
print(basket) # {'banana', 'apple', 'pear', 'orange'}
还可将列表或者元组直接转换成集合,可利用这种转换,去除列表中重复的值
a =("Google", "Lsgogroup", "Taobao", "Taobao")
b = set(a)
print(b)
# {'Taobao', 'Lsgogroup', 'Google'}
c=["Google", "Lsgogroup", "Taobao", "Google"]
d = set(c)
print(d)
# {'Taobao', 'Lsgogroup', 'Google'}
e=[1,2,3,3,4,5,6,6,7]
f = set(e) #去重
print(e) # [1, 2, 3, 3, 4, 5, 6, 6, 7]
print(f) # {1, 2, 3, 4, 5, 6, 7}
2.2集合值的读取
s = set(['Google', 'Baidu', 'Taobao'])
for item in s:
print(item)
2.3 集合的内置方法
名字 | 描述 |
---|---|
set.add(elmnt) | 添加元素,若添加的元素在集合中已存在,则不执行任何操作 |
set.update(set) | 修改当前集合,可以添加新的元素或集合到当前集合中,如果添加的元素在集合中已存在,则该元素只会出现一次,重复的会忽略 |
set.remove(item) | 用于移除集合中的指定元素。如果元素不存在,则会发生错误 |
set.discard(value) | 用于移除指定的集合元素 |
set.pop() | 用于随机移除一个元素 |
2.4数学意义上的集合操作——交并等
名字 | 描述 |
---|---|
交集 set.intersection(set1, set2) | 返回两个集合的交集 |
并集 set.union(set1, set2) | 返回两个集合的并集 |
差集 set.difference(set) | 返回集合的差集 |
异或 set.symmetric_difference(set) | 返回集合的异或 |
包含 set.issubset(set) | 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False |
包含set.issuperset(set) | 用于判断集合是不是包含其他集合,如果是则返回 True,否则返回 False |
包含set1 >= set2 | 判断集合是不是包含其他集合,如果是则返回 True,否则返回 False |
包含 set1 <= set2 | 判断集合是不是被其他集合包含,如果是则返回 True,否则返回 False |
异或 set1 ^ set2 | 返回集合的异或 |
差集 set1 - set2 | 返回集合的差集 |
交集 set1 & set2 | 返回两个集合的交集 |
并集 set1 | set2 |