#字典 info = { 'stu1101':"TenLan Wu", 'stu1102':"LongZe Luola", 'stu1103':"XiaoZe Maliya" } #查找 print(info) print(info['stu1101'])#当不存在是会报错 print(info.get('stu1104'))#不会报错,不存在是返回None print('stu1104' in info)#判断是否存在,存在输出不存在则不输出 #修改 info['stu1101'] = '武藤兰' print(info['stu1101']) #添加 info['stu1104'] = 'CangJingKong' print(info) #删除 info.pop('stu1102') del info['stu1101'] #info.popitem()#随机删除 print(info) #合并 b = { 'stu1103':'BoDuo YeJiYi', 'syu1108':'Tian HaiYi' } info.update(b) #没有的合并,重复的覆盖 print(info) #字典转成列表 print(info.items()) #初始化字典 c = dict.fromkeys([6,7,8],[1,{'name':'xxxx'},4444]) print(c) c[7][1]['name'] = '低配周杰伦' #类似浅复制的问题,只有在一层的情况下才能用fromkeys创建 print(c) #字典的循环 for i in info: print(i,info[i]) for k,v in info.items(): print(k,v) #速度慢,需要转换为列表
字典 dictionary
字電是python中唯一的映射類型,採用鍵值對的形式存儲數據
字典是除列表以外python中最靈活的內置數據結構類型,列表是有序的對象集合,字典是無序的对象集合
兩者的區別在於:字典當中的元素是通過鍵來存取的,而不是通過偏移存取
特點:無序,鍵唯一
字典的創建:
dic1={'name':'alex','age':33,'sex':'male'}
print(dic1)
dic2=dict((('name','alex'),))
print(dic2)
#增 setdefault
dic3.setdefault('age', 34)
#如果有鍵就不添加,沒有鍵會添加進去,有鍵的話setdefault會把對應的值返回
print(dic3)
#查 通過鍵去查
dic4={'name':'alex','age':33,'sex':'male'}
print(dic4['name'])
print(dic4.keys())#查找所有鍵
print(dic4.values())#查找所有值
print(dic4.items())#查找所有鍵和值
#改 直接按照鍵修改值就可以 ;update方法
dic5 = {'name': 'alex', 'age':33, 'sex':'male'}
dic5['name'] = 'hua'
print(dic5)
dic6 = {'1':222,'3':444}
dic5.update(dic6)#相當於extend在後面添加,有的話覆蓋,沒有添加
print(dic5)
print(dic6)
#刪
dic7 = {'name': 'alex', 'age':33, 'sex':'male'}
print(dic7.pop('age'))#刪除鍵值對,會返回一個值
del dic7['name']#刪除鍵值對
dic7.clear()#清空內容,但是字典還在
print(dic7)
dic7 = {'name': 'alex', 'age':33, 'sex':'male'}
a = dic7.popitem()#隨機刪除一個鍵值對
print(a, dic7)
del dic7#刪除整個字典,內存都找不到了
#其他操作以及涉及到的方法
dic8 = dict.fromkeys(['hhh','ccc','rrrr'],'sss')
print(dic8)#{'hhh': 'sss', 'ccc': 'sss', 'rrrr': 'sss'}
dic9 = dict.fromkeys(['hhh','ccc','rrrr'],['sss','www'])
print(dic9)#{'hhh': ['sss', 'www'], 'ccc': ['sss', 'www'], 'rrrr': ['sss', 'www']}
dic9['hhh'][1]='xxx' #淺拷貝
print(dic9)#{'hhh': ['sss', 'xxx'], 'ccc': ['sss', 'xxx'], 'rrrr': ['sss', 'xxx']}
#字典嵌套
#排序
dic10 = {5:'555',2:'333',4:'6666'}
print(sorted(dic10)) #結果把鍵排序
print(sorted(dic10.values())) #值排序
print(sorted(dic10.items()))
print(sorted(dic10.keys()))
#字典的遍曆--重要
dic11 = {'name': 'alex', 'age':33, 'sex':'male'}
for i in dic11:#默認打印的是鍵
print(i)
#字符串操作 string 操作
a='123'
print('hello'*2)#重複輸出:hellohello
print('helloworld'[2:])#從索引為2的位置到最後取出lloworld
print('el' in 'hello') #如果字符串中包含給定的字符返回True
print(123 in [23,45,123]) #如果字符串中包含給定的字符返回True
#格式化輸出
print('%s is a good teacher'%'alex')
#字符串拼接
a = '123'
b = 'abc'
a+b = '123abc'
c = ''.join([a,b]) #以前面單引號裏的字符串進行拼接
print(c)
#字符串的內置方法
name = "my name is {name} and i am {year}"
print(name.capitalize()) #首字母大写
print(name.count("e"))#统计字符的数量
print(name.center(40,"-"))#总长度,补全的字符
print(name.endswith("ss"))#判断以什么结尾
print(name.find("boss"))#查找字符位置
print(name.rfind('i'))#找最右的字符
print(name[name.find("the"):])#字符串的切片
print(name.format(name='lihaitao',year=18))
print(name.index("is")) #查找
print('dsa232'.isalnum())#是否只包含数字和英文字符
print('dsa232'.isalpha())#是否只英文字符
print('A232'.isalnum())#是否为十进制
print('A232'.isdigit())#是否为整数
print('A232'.isidentifier())#判断是否为合法的变量名
print('A232'.isnumeric())#与isdigit()一样
print(' '.isspace())#是否为一个空格
print('My Name Is'.istitle())#首字母是否都为大写
print('My Name Is'.isupper())#是否全为大写
print(','.join(['1','2','3','4']))
print(name.ljust(50,'*'))#长度,补全
print(name.rjust(50,'*'))
print('Lihaitao'.lower())
print('Lihaitao'.upper())
print('
Lihaitao'.strip())#去掉回车和空格,rstrip右边,lstrip左侧
p = str.maketrans('abcdef$','1234567')
print('$avbdsdcz'.translate(p))#类似加密的一个替换
print('lihaitao'.replace('a','A',1))#替换和替换的数量
print('1+2+3+4'.split('+'))#提取
print('1+2
3+4'.splitlines())#以换行提取
print('Lihaitao'.swapcase())#大小写互换
print('Lihai tao'.title())#每个单词首字母大写
#列表 import copy names = ["张三","李四","王五","赵六",["郝","陈"]] print(names[1:3]) print(names[-1]) print(names[-3:-1]) print(names[-3:]) #0可以省略 print(names[0:-1:2])#步长切片 #增 names.append("李星") print(names) names.insert(1,"胖子") #位置,内容 print(names) #删 names.remove("张三") print(names) del names[1] print(names) names.pop(2)#没有参数默认删除最后一个 print(names) #查 print(names.index("王五")) #统计 print(names.count("李星")) #删除列表 #names.clear() #反转 names.reverse() print(names) #排序 names.sort() print(names) #合并 names2 = [1,2,3,4] names.extend(names2) print(names) #复制 name2 = names.copy()#浅copy 与name2 = copy.copy(names)和name2 = names[:]一样 name3 = copy.deepcopy(names)#深copy print(names) print(name2) print(name3) names[1]="李" names[-1][0]="板云" print(names) print(name2) print(name3) #列表循环 for i in names: print(i)