元组.列表,集合
一、元组
- 元组是一个不可变的序列,(元组内的数据是不可变话的,不可更改的)
- 元组的表达形式 () tuple
tuple1 = (1, 2, 3, 4, 5)
- 如果元组不是一个空元祖,那么它必须得有一个逗号
tuple2 = 10, #tuple类型
tuple3 = (10) #int类型
tuple3 = () #空元组
- 拆包
拆包的时候如果有, 那么有且只能有一个, 接受参数之后,结果是用一个列表来放置的* - 元组拆包
tuple4 = (1, 2, 3, 4)
a, *b, c = tuple4
print(a, b, c)
- 字符串的拆包
a = 'abcde1'
b, *c = a
print(b, c) #a ['b', 'c', 'd', 'e', '1']
- 列表的拆包
list1 = [1, 2, 3, 4, 5]
a, *b = list1
print(a, b) # 1 [2, 3, 4, 5]
二、字典
字典:mapping 映射关系 key:value 一个字典中, 每一个key都是唯一的,我们只需要通过key就可以查找到我们需要的数据, key-value我们称之为键值对,也可以称呼它为一项item
- 字典的创建(空) dict 用的符号是{}
dict1 = {} #空字典
#使用dict类去创建字典
dict2 = {
'name': '郭靖',
'age': 18,
'sex': '男',
'name': '欧阳锋',
'skill': '蛤蟆功'
}
#重复的name 后面值 替换前面值
当字典中的key有重复的时候,后面的key-value会替换前面的
- 获取value, 直接用 dict[key]
print(dict2['skill']) #蛤蟆功
- python2 有序字典 orderdict 无序字典
- 字典操作
1.赋值
dict[key] = value
2.添加key-value
dict.setdefault(key, [default])
如果这个key已经存在于字典中,则返回value,不会对字典有影响, 如果不存在,则向字典中添加这个key,并设置value
3.dict.update() 将其他字典中的key—value添加到当前字典中
d1 = {'1': 1}
d2 = {'2': 2}
d1.update(d2)
print(d1) #{'1': 1, '2': 2}
4.浅拷贝和深拷贝
4.1浅拷贝
浅拷贝只能对第一层的数据进行拷贝,如果,第一层的数据也是个可变类型,那么浅拷贝无法将这个数据重新拷贝一份形成新的id
import copy
dict1 = {'1': 1, '2': 2, 'list1': [1, 2, 3, {'name': [12, 23]}]}
# dict2 = {'1': 1, '2': 2}
dict2 = copy.copy(dict1)
# dict2 = dict1.copy()
print(id(dict1), id(dict2))
print(id(dict1['list1']), id(dict2['list1']))
4.2深拷贝
深拷贝则可以对所有的数据全部进行拷贝,形成一个新的id
dict3 = copy.deepcopy(dict1)
print(id(dict1), id(dict3))
print(id(dict1['list1']), id(dict3['list1']))
5.字典的遍历
dict1 = dict(name='郭靖', age=18, sex='男')
#通过key来遍历 dict.keys()
for k in dict1.keys():
print(dict1[k])
# 通过value来遍历 dict.values()
for v in dict1.values():
print(v)
# 通过一项来进行遍历 dict.items()
for k, v in dict1.items():
print(k, '=', v)
作业
1.课常代码练习
2.a = {“name”:“123”,“data”:{“result”:[{“src”:“python1”},{“src”:“python2”},{“src”:“python3”}]}} 找到python1/python2/python3
a = {"name":"123","data":{"result":[{"src":"python1"},{"src":"python2"},{"src":"python3"}]}}
print(a['data']['result'][0]['src'])
print(a['data']['result'][1]['src'])
print(a['data']['result'][2]['src'])
3.有如下值集合[11,22,33,44,55,66,77,88,99,90], 将所有大于66的值保存至字典的第一个key的值中,将小于66值保存至第二个key的值中
list=[11,22,33,44,55,66,77,88,99,90]
list1=[]
list2=[]
for i in list:
if i>66:
list1.append(i)
elif i<66:
list2.append(i)
dic1={}
dic1.setdefault('key1',list1)
dic1.setdefault('key2',list2)
print(dic1)