字典的内置方法
作用
- 当列表中有很多值的时候,就会显得很乱,所以有了字典
定义方式
- '{}'内以逗号分隔开多个键值对key:value的值,key一般为字符串,对值具有描述意义,value可以是任意数据类型的值
myself_dict = {'name': 'lj', 'age': 21, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le'],}
d1 = {}
d2 = dict()
# 看得懂就可以,不要用这个写
d = dict(name='lj', age=21, weight=130)
方法
优先掌握
1.按key存取值, 可存可取
print(myself_dict['name'])
myself_dict['age'] -= 1
print(myself_dict)
lj
{'name': 'lj', 'age': 20, 'weight': 130, 'hobby_list': ['chi', 'he', 'wan', 'le']}
2.长度len
- 一个键值对是一个长度
print(len(myself_dict))
4
3.成员运算, in 和 not in
- 比较的是键而不是值
print('name' in myself_dict)
print('lj' in myself_dict)
True
False
4.删除 del
- 参数填键,不填会报错,找不到也会报错
- 和pop的区别是del可以删除整个变量
del myself_dict['weight']
print(myself_dict)
{'name': 'lj', 'age': 20, 'hobby_list': ['chi', 'he', 'wan', 'le']}
5.删除 pop
- 参数填键,不填会报错,找不到也会报错
myself_dict.pop('age')
print(myself_dict)
{'name': 'lj', 'hobby_list': ['chi', 'he', 'wan', 'le']}
6.keys & values & items
- 返回的值类似于列表,但不是列表,以后再讲
print(myself_dict.keys())
print(myself_dict.values())
print(myself_dict.items())
dict_keys(['name', 'hobby_list'])
dict_values(['lj', ['chi', 'he', 'wan', 'le']])
dict_items([('name', 'lj'), ('hobby_list', ['chi', 'he', 'wan', 'le'])])
7.for 循环
for i in myself_dict:
print(i)
print()
for i in myself_dict.keys():
print(i)
print()
for y in myself_dict.values():
print(y)
print()
for i in myself_dict.items():
print(i)
print()
for i, y in myself_dict.items():
print(i, y)
print()
name
hobby_list
name
hobby_list
lj
['chi', 'he', 'wan', 'le']
('name', 'lj')
('hobby_list', ['chi', 'he', 'wan', 'le'])
name lj
hobby_list ['chi', 'he', 'wan', 'le']
需要掌握
1.get
- 和直接用键取值的区别在于: 如果键不存在,不会报错,默认返回None,可以设定返回值
print(myself_dict.get('name'))
print(myself_dict.get('asda'))
print(myself_dict.get('asda', 123))
lj
None
123
2.update
- 将update中的字典更新到原字典中,有就更新,没有就添加
- update中必须是一个字典
one_dict = {'one': 1}
myself_dict.update(one_dict)
myself_dict.update({'name': 'ljl'})
print(myself_dict)
{'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1}
3.fromkeys
- 无视方法前面的字典内容,把给定列表内的元素取出来当成key,然后使用同一个value新建一个字典
from_dict1 = dict.fromkeys([1, 2, 3], 'num')
from_dict2 = myself_dict.fromkeys([1, 2, 3], 'num')
print(from_dict1)
print(from_dict2)
{1: 'num', 2: 'num', 3: 'num'}
{1: 'num', 2: 'num', 3: 'num'}
4.setdefault
- 如果字典中有该key的话,则该key对应的值不变,如果没有,就添加一个
- 和update()区别在于只能参数是填写键和值(值默认是None),不能填写一个字典进去.
myself_dict.setdefault('a', 1)
myself_dict.setdefault('name', 'lj')
print(myself_dict)
{'name': 'ljl', 'hobby_list': ['chi', 'he', 'wan', 'le'], 'one': 1, 'a': 1}
存储一个值or多个值
- 多个值
有序or无序
- 无序
可变or不可变
-
可变
注意:字典的键是惟一的,但值不是惟一的,所以大多的方法都是使用键作为参数
集合的内置方法
作用
- 储存多个值
定义方式
- '{}'内以逗号隔开多个元素,元素的类型必须可哈希(不可变类型)
num_set = {1, 2, 3, 'a'}
# 创建空集合的方式,不要用{},那是dict
emp_set = set()
方法
1.去重 & 乱序
- 集合内的元素具有唯一性,并且是无序的
- 自己的猜想:集合内的元素可能并不是完全无序的,因为相同数据的打印结果是相同的.所以可能只是按照程序内部的规则来进行排序
num_set = {3, 2, 3, 2, 1, 'a'}
print(num_set)
{1, 2, 3, 'a'}
2.长度len, 极值max, min
- 极值只能在元素全是数字时进行比较
print(len(num_set))
4
3.成员运算 in 和 not in
print(3 in num_set)
True
4.循环
for i in num_set:
print(i)
1
2
3
a
5.并集 union '|'
set1 = {1, 2, 3}
set2 = {2, 3, 4}
print(set1 | set2)
print(set1.union(set2))
{1, 2, 3, 4}
{1, 2, 3, 4}
6.交集 intersection '&'
print(set1 & set2)
print(set1.intersection(set2))
{2, 3}
{2, 3}
7.差集 difference '-'
print(set1 - set2)
print(set1.difference(set2))
{2, 3}
{2, 3}
8.对称差集 symmetric_difference '^'
print(set1 ^ set2)
print(set1.symmetric_difference(set2))
{1, 4}
{1, 4}
9.父集 issuperset '>' ">="
print(set1 > set2)
print(set1.issuperset(set2))
False
False
10.子集 issubset '<' '<='
print(set1 < set2)
print(set1.issubset(set2))
False
False
11.add
set1.add(5)
print(set1)
{1, 2, 3, 5}
12.remove
set1.remove(5)
print(set1)
{1, 2, 3}
13.difference_update
- 从这个集合中另一个集合中有的所有元素
set1.difference_update(set2)
print(set1)
{1}
14.discard
- 和remove的区别在于如果值不存在则返回None,不会报错
print(set1.discard(2))
None
15.isdisjoint
- 如果两个集合的交集为空,返回True
print(set1.isdisjoint(set2))
True
16.clear & copy
- clear只是清空元素,不删除地址
- copy浅拷贝
存储一个值or多个值
- 多个值
有序or无序
无序
可变or不可变
可变
冰冻集合
- 冰冻集合就是不可以进行任何修改的集合
- frozenset也是一个特殊的集合类型
- 除了不能修改外,拥有集合的所有特性
# 创建
fs = frozenset()
print(type(s))
print(s)
<class 'frozenset'>
frozenset()