本次内容:


元祖

字典

浅copy和深copy

集合

文件处理

1.1元祖

元祖(tuple)与列表类似,不同之处在于元祖的元素不能修改,元祖使用小括号(),列表使用方括号[].元祖创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

创建元祖

1 name = ('xiaojian','yangjian','while','yj')
2 name1 = ('xiaojian',) #元祖只有一个元素时,需要加逗号(,)
3 kong = () #创建一个空元祖

元祖与列表类似,下标索引从0开始,可以进行截取,组合。

删除元祖

#元祖的元素值是不允许删除的,但可以使用del语句删除整个元祖
del name

不可修改的元祖的意义:

因为tuple不可变,所以代码更安全。如果可能,能用tuple代替代替list就尽量用tuple。

1.2字典

字典(dictionary)是一种可变容器的类型,且可存储任意类型对象。

字典的每个(key:value)对用冒号(:),每个对之间用逗号(,)分隔

键(key)必须是唯一的,但键必须是不可变的,如字符串,数字,元祖

 

字典的特性:

  1. 不允许同一个键(key)出现两次,创建时如果同一个key被赋值两次,后一个值会被记住。
  2. 键(key)必须是可变的,所以用数字,字符串或元祖充当,列表不行。
  3. 字典是无序的

 

字典的意义:我们可以找出某个key对应的value;列表和元祖,都是一种容器,但是只是储存单一的元素。

举例说明:

一个班级,要找出“小明”相应的信息,如果这个班级可能两个人或多个人叫同一个名字,那么我们需要通过唯一(key)的学号, 来获取相应学号的姓名,年级,班级,性别等等

 

创建字典

 1 grade1 = {
 2     'stu001':'xiaojian',
 3     'stu002':'xiaoming',
 4     'stu003':'xiaowang',
 5     'stu004':'xiaoli',
 6     'stu005':'xiaoyang',
 7 }
 8 
 9 或者
10 
11 grade2 = {
12     'stu001': ['xiaojian',8,'female'],
13     'stu001': ['xiaojian',8,'male'],  #这里我写了两个重复key,但是查看字典,会记住第二次赋值的key
14     'stu002': ['xiaomei',8,'female'],
15     'stu003': ['xiaoming',7,'male'],
16     'stu004': ['xiaoming',8,'female'],
17     'stu005': ['xiaoyang',8,'male'],
18 }

输入结果:

print(grade1)
print(grade2)

{'stu003': 'xiaowang', 'stu001': 'xiaojian', 'stu004': 'xiaoli', 'stu005': 'xiaoyang', 'stu002': 'xiaoming'}
{'stu003': ['xiaoming', 7, 'male'], 'stu001': ['xiaojian', 8, 'female'], 'stu004': ['xiaoming', 8, 'female'], 'stu005': ['xiaoyang', 8, 'male'], 'stu002': ['xiaomei', 8, 'female']}

 

增加

grade1['stu006']='yangjian'

print(grade1)
{'stu005': 'xiaoyang', 'stu006': 'yangjian', 'stu002': 'xiaoming', 'stu004': 'xiaoli', 'stu003': 'xiaowang', 'stu001': 'xiaojian'}

 

删除

del grade1['stu001']  #删除特定key
grade1.pop('stu002')    #删除特定key
grade1.popitem()   #随机删除某一key 
grade1.clear()   #清空字典
del grade1 #删除字典

 

修改

grade1['stu001'] = '小贱'  #如果没有该key,则在字典创建新的的的key-value

print(grade1)
{'stu001': '小贱', 'stu002': 'xiaoming', 'stu003': 'xiaowang', 'stu005': 'xiaoyang', 'stu004': 'xiaoli'}

查询

print('stu005' in grade1)  #查询该key是否在字典里,返回  True  or  false
print(grade1.get('stu001'))  #查询该key的值,如没有该key 则返回None
print(grade1['stu001'])  #查询已知key,如没有该key。则会有语法错误KeyError

其他用法

 1 #dict.fromkeys()  创建一个新字典,以序列(seq)中元素做字典的key,value为字典所有键(key)对应的初始值
 2 dict1 = dict.fromkeys([1,2,3,4],'a')
 3 print(dict1)
 4 {1: 'a', 2: 'a', 3: 'a', 4: 'a'}
 5 
 6 #grade1.get()返回指定键的值,如果只不在字典中返回None值
 7 print(grade1.get('stu007'))
 8 
 9 #grade1.items() 以列表返回可遍历的(key,value)元祖数组
10 print(grade1.items())
11 #dict_items([('stu003', 'xiaowang'), ('stu005', 'xiaoyang'), ('stu002', 'xiaoming'), ('stu001', 'xiaojian'), ('stu004', 'xiaoli')])
12 
13 # grade1.keys() 以列表形式,返回一个字典的所有键
14 print(grade1.keys())
15 # dict_keys(['stu002', 'stu001', 'stu003', 'stu004', 'stu005'])
16 
17 
18 # grade1.setdefault(key,default=None)和get()类似,如果有该键,则获取该键的值,但如果键不存在字典中,将会添加键并将值设为default
19 print(grade1.setdefault('stu005','aaa')) #在字典中有该key
20 # xiaoyang
21 
22 print(grade1.setdefault('stu007','小王')) #在字典中没有该key
23 # 小王
24 
25 # dict1.update(dict2) 把字典2的更新到字典一的值
26 
27 #grade1.values() 以列表返回字典中的所有值
28 print(grade1.values())
29 dict_values(['xiaoming', 'xiaowang', 'xiaojian', 'xiaoyang', 'xiaoli'])
View Code

相关文章:

  • 2022-12-23
  • 2021-12-24
  • 2021-06-06
  • 2022-12-23
  • 2021-12-29
  • 2022-01-27
  • 2021-11-10
  • 2022-12-23
猜你喜欢
  • 2022-12-23
  • 2022-12-23
  • 2021-06-21
  • 2021-08-05
  • 2021-08-20
  • 2022-12-23
  • 2022-01-14
相关资源
相似解决方案