标签:通过 解构 存储 封装 不能 划线 个数 返回 body
命令格式:
字典名:{‘键1‘:值1,‘键2‘:值2,....}
# 合法的键
dic = {123: 456, True: 666, "id": 1, "name": ‘杨梅‘, "age": 19, "stu": [‘狼‘, ‘羊‘], (1, 2, 3): ‘开开心心‘}
print(dic[123])
print(dic[True])
print(dic[‘id‘]) #key通常用int或str来表示,当然tuple、bool也可以
print(dic[‘stu‘])
print(dic[(1, 2, 3)])
# 不合法的键
dic = {[1, 2, 3]: ‘罗志祥‘} # 列表list是可变的. 不能作为key
dic = {{1: 2}: "多人"} # 字典dict是可变的. 不能作为key
dic = {{1, 2, 3}: ‘运动‘} # 集合set 是可变的, 不能作为key
dic={}
dic[‘name‘]=‘杨梅’
dic[‘age‘]=12
print(dic)
结果:
{‘name‘: ‘杨梅‘, ‘age‘: 12}
当setdefault中第一个参数存在这个字典中就就不进行添加操作,否则就添加
dic={}
a=dic.setdefault(‘many‘,‘3000‘)
print(a)
print(dic)
结果:
3000
{‘many‘:‘3000‘}
dic={‘many‘:‘3000‘}
dic.pop(‘many‘) # pop删除有返回值,返回的是被删的值
print(dic)
结果:
dic={}
dic={‘many‘:‘3000‘}
dic.popitem() #随机删除,python3.6中默认删除最后一个
print(dic)
结果:
dic={}
dic={‘many‘:‘3000‘}
dic.clear() #清空字典
dic={‘many‘:‘3000‘}
dic[‘many‘]=‘4000‘
print(dic)
结果:
{‘many‘:‘4000‘}
dic={‘many‘:‘3000‘}
dic.update({‘many‘:‘4000‘,‘book‘:‘5000‘})
print(dic)
结果:
{‘many‘: ‘4000‘, ‘book‘: ‘5000‘}
dic={‘many‘:‘3000‘}
a=dic[‘many‘]
print(a)
结果:
3000
dic={‘many‘:‘3000‘}
a=dic.get(‘many‘)
print(a)
结果:
3000
dic={‘many‘:‘3000‘}
a=dic.get(‘many‘,‘找不到就太棒了‘)
print(a)
结果:
3000
dic={‘many‘:‘3000‘}
a=dic.get(‘any‘,‘找不到就太棒了‘)
print(a)
结果:
找不到就太棒了
dic={‘many‘: ‘4000‘, ‘book‘: ‘5000‘}
key_list = dic.keys()
print(key_list)
结果:
dict_keys([‘many‘, ‘book‘])
# 一个高仿列表,存放的都是字典中的key
dic={‘many‘: ‘4000‘, ‘book‘: ‘5000‘}
value_list = dic.values()
print(value_list)
结果:
dict_values([‘4000‘, ‘5000‘])
#一个高仿列表,存放都是字典中的value
dic={‘many‘: ‘4000‘, ‘book‘: ‘5000‘}
key_value_list = dic.items()
print(key_value_list)
结果:
dict_items([(‘many‘, ‘4000‘), (‘book‘, ‘5000‘)])
# 一个高仿列表,存放是多个元祖,元祖中第一个是字典中的键,第二个是字典中的值
dic={‘many‘:‘4000‘,‘book‘:‘5000‘}
for i in dic.keys()
print(i)
dic={‘many‘:‘4000‘,‘book‘:‘5000‘}
for i in dic.values()
print(i)
dic={‘many‘:‘4000‘,‘book‘:‘5000‘}
for i in dic.items()
print(i)
dic={‘many‘:‘4000‘,‘book‘:‘5000‘}
for k,v in dic.items():
print(‘这是键‘,k)
print(‘这是值‘,v)
例-解构:
a = 4
b = 5
temp = a
a = b
b = temp
#等价于
a,b = b,a #右边使用了封装,左边使用了解构
例-封装:
t1 = (1,2) #定义元组
t2 = 1,2 #将1和2封装成元组
type(t1)
type(t2)
例:
lst = [3, 5]
first, second = lst
print(first, second)
例:
a,b = 1,2 #正常的封装解构
a,b = (1,2) #元组的封装解构
a,b = [1,2] #列表的封装解构
a,b = {10,20} #set的封装解构
a,b = {‘a‘:10,‘b‘:20} # 非线性结构也可以解构
lst = list(range(1, 21, 2)) #把1-21之间的数写入列表lst中
head, *mid, tail = lst #执行结果1 [3, 5, 7, 9, 11, 13, 15, 17] 19
*lst2 = lst #不能单独使用
*body, tail = lst #执行结果 [1, 3, 5, 7, 9, 11, 13, 15, 17] 19
head, *tail = lst #执行结果 1 [3, 5, 7, 9, 11, 13, 15, 17, 19]
head, *m1, *m2, tail = lst #只能有一个*变量名
head, *mid, tail = "abcdefghijklmn" #执行结果 a [‘b‘, ‘c‘, ‘d‘, ‘e‘, ‘f‘, ‘g‘, ‘h‘, ‘i‘, ‘j‘, ‘k‘, ‘l‘, ‘m‘] n
type(mid) #mid 类型是列表 list
这是一个惯例,是一个不成文的规定,不是标准
如果不关心一个变量,就可以定义变量的名字为_
_是一个合法的标识符,也可以作为一个有效的变量使用,但是定义成下划线就是希望不要被使用,除非你明确的知道这个数据需要使用
_这个变量本身无任何语义,没有任何可读性,所以不是用来给人用的
Python中很多库,都使用这个变量,使用十分广泛,请不要在不明确变量作用域的情况下使用_导致和库中的冲突
lst = [9,8,7,20]
first, *second = lst
head, *_, tail = lst
print(head)
print(tail) #_是合法的标识符,看到下划线就知道这个变量就是不想被使用
print(_)
结果:
9
20
[8,7]
dic = {
‘name‘:‘杨梅‘,
‘age‘:18,
‘wife‘:[{‘name‘:‘林志玲‘,‘age‘:17}],
‘children‘:[‘熊大‘,‘熊二‘]
}
dic1=dic[‘name‘] #获取杨梅的名字
dic2=dic[‘wife‘][0][‘name‘] #获取杨梅老婆的名字
dic3=dic[‘wife‘][0][‘age‘] #获取杨梅老婆的年龄
dic4=dic[‘children‘][0] #获取杨梅的大孩子
标签:通过 解构 存储 封装 不能 划线 个数 返回 body
原文地址:https://www.cnblogs.com/yangte/p/13394601.html