格式化输出;编码;运算符;逻辑运算;数据类型整体分析;字符串的索引与切片;list:列表;元组(tuple);dict(dictionary):字典;集合set;字符串的常用方法;列表的操作方法;元组;字典及操作方法;
格式化输出(模板化)
用% ;s; d;
“%”为占位符;“s”为替换符(用于替换字符串);“d”也是替换符(可用于替换数字);当需要单纯地使用%(百分号)时,那就在它的前或后再加一个%,用来表示它不是占位符。
例如:
name = input("你的名字:")
age = input("你的年龄:")
cool = input("帅or丑:")
mgs = '''
------%s的信息表------
我的名字是%s:
我的年龄是%d
我很%s
我的学习进度是5%%
----------END---------''' %(name,name,int(age),cool)
print(mgs)
输出结果为:
你的名字:Aires
你的年龄:18
帅or丑:帅
------Aires的信息表------
我的名字是Aires:
我的年龄是18
我很帅
我的学习进度是5%
----------END---------
编码
数据的传输和储存,实际上都是010101形式的二进制文件;通过各种形式的编码方式,转换成各种文字符号。
美国:ASCII码:创造之初有8位(bit)二进制数字,每个8位二进制数字代表一个字节(byte),但当时实际只使用了7位,共表示出了177个字符,留出的那一位是为了未来的拓展
所以ASCII码最左边的那一位数字全都是0
8bit==1byte(字节) 1024byte==1KB 1024KB==1MB 1024MB==1GB 1024GB==1TB 4个字节(byte)==32位(bit)
虽然177个字符在美国足够了,但面对中国这个拥有9万多文字的国家来说还是远远不够的,所以为了解决这个全球化的文字问题,美国有创建了万国码:Unicode
Unicode 最开始的格式:用16位(bit)2个字节(byte)表示所有的英文字母、特殊字符、数字;4个字节(32bit)表示汉字,但是位数过多导致了浪费,所以有了它的升级版:utf-8;
utf-8:最少用一个字节也就是8位(bit)表示一个英文。欧洲文字使用16位(bit)2个字节。中文使用24位(bit)3个字节(byte)表示;
国产国内使用的编码:gbk(GBK) ASCII码升级得来 只能表示中文和英文 一个中文使用2个字节,英文用1个字节;
gbk和utf-8需要通过unicode转译
运算符:
+(加)、-(减)、*(乘)、/(除)、**(幂、乘方)、//(整除)、==(相等)、!=(不等)
运算简写:a+=1 == a=a+1
a-=1 ==a=a-1
a*=1 ==a=a*1
a/=1 == a=a/1
逻辑运算:and(并且;而且) 、 or (或;或者) 、 not(不)
优先级:()> not > and > or #有括号先算括号,然后算not ,然后算and(两边条件都为真),然后再算or(两边条件有一边条件为真,就是真)
相同优先级的情况下,从左往右算
or: x or y x为非零 就返回x的值,否则返回y的值 例如:0 or 2 得到的值为2; 2 or 6 得到的值为2.
and:与or相反 例如: 0 and 2 返回的值为0 2 and 6 返回的值为6
print(0 or 2 and 3 and 4 or 6 and 0 or 3)
输出结果为4 #过程:按优先级从左往右2 and 3 -> 3 3 and 4 -> 4 6 and 0 -> 0 0 or 4 -> 4 后面的就不执行了
print( 6 or 2 > 1)
输出结果为6 #过程:6 or 2 > 1 --> 6
print(2 > 1 or 6)
输出结果为 True #过程:2 > 1 为真(True)
print(3 and 2 > 1)
输出结果为 True #过程: 2 > 1为真(True)
print(0 and 3 > 1)
输出结果为0 #过程:x and y若x==0 就返回x的值
print(3 < 1 and 0)
输出结果为 False #过程: x and y 若x为假(False)就返回x的值 反之 若x为真则返回y的值。
布尔值(bool)与数字(int)可以互相转换:所有非零的数字(不管多大,不管正负)转换为布尔值都是True;数字0转换为布尔值是False;
而布尔值转换为数字只有两种结果:True转换为1 False转换为0
数据类型整体分析:
int:(整数;数字)用于计算。
数字主要是用于计算用的,使用方法并不是很多,就记住一种就可以:
bit_length()
#bit_length() 当十进制用二进制表示时,最少使用的位数
v = 11
data = v.bit_length()
print(data)
bool:True,False,用于判断。
str:字符串,用引号引起来的都是字符串。用于储存少量数据进行操作。
ps:循环:while 1比while true 的效率高。
int转换为str-->无条件,想咋转换就咋转换。--> i = 1; s = str(i)
str转换为int-->字符串里只能是数字。-->s = “1”;i = int(s)
int转换为bool-->若int为0,那么返回的结果就是False,反之,如果int为非零,那么返回的结果就是True。
bool转换为int-->只有两种结果:True就是1,False就是0.
str转换为bool-->空字符串,例如s = “” 中间什么都没有,就是False,反之,若字符串非空,就是True。
字符串的索引与切片。
索引即下标,就是字符串组成的元素从第一个开始,初始索引为0以此类推。
a = 'ABCDEFGHIJK'
print(a[0])
print(a[3])
print(a[5])
print(a[7])
切片就是通过索引(索引:索引:步长)截取字符串的一段,形成新的字符串,原字符串不作任何改变(原则就是顾头不顾尾,意思就是从设定的头开始到设定的尾的前一位数据)。
a = 'ABCDEFGHIJK'
print(a[0:3])
print(a[2:5])
print(a[0:]) #默认到最后
print(a[0:-1]) # -1 是列表中最后一个元素的索引,但是要满足顾头不顾腚的原则,所以取不到K元素
print(a[0:5:2]) #加步长,步长指在设定的切片首位之间,每间隔步长-1,取一个数据。这段代码意为在ABCDE中每隔一个数据取一个数据,所以输出位ACE。
print(a[5:0:-2]) #反向加步长;意为从F开始到A之间,每隔一个数据,取一个数据,所以输出的数据是FDB
ps:
若要取全部值可用【:】冒号两边都为空,若【0:0】输出为空,不会报错
要取的数据之间的步长必须相等
list:列表,用中括号括起来的数据或字符串 例如【1,2,3,“asd”】每个元素以逗号隔开,而且他里面可以存放各种数据类型。列表相比于字符串,不仅可以储存不同的数据类型,而且可以储存大量数据,32位python的限制是 536870912 个元素,64位python的限制是 1152921504606846975 个元素。而且列表是有序的,有索引值,可切片,方便取值。。
元组(tuple):可以储存成千上万的各种类型的数据,与列表的区别是:它是只读版本的列表,只能读取,不能更改。
dict(dictionary):字典,{“name”:“姓名”,“age”:16}
字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。可哈希表示key必须是不可变类型,如:数字、字符串、元组。
字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。
集合set。
集合是无序的,不重复的数据集合,它里面的元素是可哈希的(不可变类型),但是集合本身是不可哈希(所以集合做不了字典的键)的。以下是集合最重要的两点:
去重,把一个列表变成集合,就自动去重了。
关系测试,测试两组数据之前的交集、差集、并集等关系。
字符串的常用方法:
1、首字母大写:capitalize()
1 s = "aires"
2 s1 = s.capitalize()
3 print(s1)
输出结果为:
Aires
2、字符串所有字母大写:upper()
s = "aires"
s2 = s.upper()
print(s2)
输出结果为:
AIRES
3、字符串所有字母小写:lower()
s = "AIRES"
s3 = s.lower()
print(s3)
输出结果为:
aires
4、字符串中字母大小写反转:swapcase()
(1)大写转小写
s = "AIRES"
s4 = s.swapcase()
print(s4)
输出结果为:
aires
(2)小写转大写
a = "aires"
s41 = a.swapcase()
print(s41)
输出结果为:
AIRES
5、在单词中间隔着空格、特殊字符或数字的情况下首字母大写:title()
s = "air;es asd-fg fj2fj"
s5 = s.title()
print(s5) #只要字符串中有除了英文以外的字符,那么那个字符后面的那一个英文字母转换为大写。
输出结果为:
Air;Es Asd-Fg Fj2Fj
6、字符串内容居中,字符串总长度,空白处填充其他字符:center() (长度,填充)
s = "Aires"
s6 = s.center(40,"-") #(长度,填充)若使用此方法,长度必须填,若想保持不变可以填0,不可为空。填充符可不填,默认为空格。
print(s6)
输出结果为:
-----------------Aires------------------
7、位数补齐(不常用):exoandtabs()
s = "Air\tes" #\t
s = "Air\tes" #\t==Tab键 若字符串中有“\t”键 那便与它前面的字符加空格补齐八位,若前面的字符已够八位那便补齐16位,然后是24位...32位
s7 = s.expandtabs()
print(s7)
输出结果为:
Air es
8、公共方法(字符串,元组,列表,字典等皆可用的方法)len() (变量名)
s = "Aires"
s8 = len(s)
print(s8)
输出结果为:
5 #用于字符串输出有多少字符,用于元组输出有多少元素,用于列表输出有多少元素,用于字典输出有多少键值对;
9、判断一组字符串的开头或结尾(可切片):
开头:startswith()
s = "Aires"
s9 = s.startswith("Air",0,4) #(需要判定的开头,设定切片首,设定切片尾)(顾头不顾尾)
print(s9)
输出结果为:
True 返回的值为bool(布尔值)
结尾:endswith()
s = "Aires"
s91 = s.endswith("re",0,4) #(需要判定的结尾,设定切片首,设定切片尾)(顾头不顾尾)
print(s91)
输出结果为:
True
10、寻找字符串中是否有某个字符:find() index()与find()差不多,但找不到会报错,所以一般选择用find()
s = "Aires"
s10 = s.find("re",0,4) #用find通过元素(字符)寻找索引,找到的情况下返回第一个元素(字符)的索引,找不到返回-1.
print(s10)
输出结果为:
2
11、删除字符串前后的空格或字符:strip() 删除左侧的空格或字符:lstrip() 删除右侧的空格或字符:rstrip()
s = "**Ai*res**"
s11 = s.strip("*A") #括号不填默认删除空格,括号里填什么字符就前后删除什么字符,可多填,中间不用逗号分开。不能删字符串中间的字符,只能删两边的
print(s11)
输出结果为:
i*res
从左删lstrip() 意为只删左面的,右面的不懂,反之,从右删rstrip() 意为只删右边的,左边的不动。
12、分割 字符串转换为列表:split()
s = "Ai;re;s"
s12 = s.split(";") 括号中不写默认为以空格分割字符串为列表。括号里填什么符号就以什么符号分割字符串为列表。
print(s12)
输出结果为:
['Ai', 're', 's'] #结果为列表
13、格式化输出的三种玩法:format(尽量用这种格式化输出方法)
s13='我叫{},我{}岁了,我的爱好是{}'.format('aires',18,'play computergame') #顺序输入
s131='我叫{0},我{1}岁了,我的爱好是{2}'.format('aires',18,'play computergame') #索引
s132='我叫{name},我{age}岁了,我的爱好是{hobby}'.format(hobby='play computergame',name='aires',age=18) #字典(键值对)
print(s13)
print(s131)
print(s132)
输出结果为:
我叫aires,我18岁了,我的爱好是play computergame
我叫aires,我18岁了,我的爱好是play computergame
我叫aires,我18岁了,我的爱好是play computergame
14、替换:repalce()(需要替换的字符,新的字符,替换次数)替换次数为空默认全部替换
s = "123666aaaaad"
ls = s.replace("a","q")
print(ls)
输出结果为:
123666qqqqqd
15、判断字符串是否由(数字,字母,数字或字母)组成:
数字:isdigit() ; 字母:isalpha() ; 数字或字母:isalnum()
只返回两个结果(True,False)
ps:括号里不写参数
name = "aires132546"
print(name.isalnum()) #字符串由字母或数字组成
print(name.isalpha()) #字符串只由字母组成
print(name.isdigit()) #字符串只由数字组成
输出结果为:
True
False
False
16、计算一个元素在字符串里出现了多少次(计数):count()
ps:与“len()”一样可用于列表
s = "123666aaaaad"
ls = s.count("6")
print(ls)
输出结果为:
3
for循环:用户按照顺序循环可迭代对象的内容。
ps:由多个元素组成的字符串,元组,列表,字典等,都是可迭代对象
字符串:
he = '呵呵哒!'
for play in he:
print(play)
输出结果为:
呵
呵
哒
!
列表:
li = ['aires','内存','ssd','cpu','显卡']
for computer in li:
print(computer)
输出结果为:
aires
内存
ssd
cpu
显卡
字典:
dic = {'name':'aires','age':18,'hobby':'girl'}
for k,v in dic.items():
print(k,v)
输出结果为:
name aires
age 18
hobby girl
列表的操作方法: 四种:增、删、改、查
ps:直接对原列表进行操作,不生成新列表。
1、增:
(1)append:在列表末尾追加
li = ["aires","oython"] #定义列表
while 1 : #开始循环
name = input(">>>") #用户输入
if name.strip().upper() == "Q" : #对用户输入的内容去空格,全部改为大写
break #若用户输入内容为q(Q)则退出循环
else :
li.append(name) #否则就将用户输入的内容添加到列表的末尾
print(li)
输出结果为:
>>>Aires
>>>hdaukd
>>>132
>>>q
['aires', 'oython', 'Aires', 'hdaukd', '132']
(2)insert:在列表中间插入,(需要索引,添加的元素将添加到索引元素的前面)
li = ["aires","oython","打我发发发"] #定义列表
while 1 : #开始循环
name = input(">>>") #用户输入
if name.strip().upper() == "Q" : #对用户输入的内容去空格,全部改为大写
break #若用户输入内容为q(Q)则退出循环
else :
li.insert(2,name) #否则就将用户输入的内容添加索引元素的前面
print(li)
输出结果为:
>>>AIRES
>>>q
['aires', 'oython', 'AIRES', '打我发发发']
(3)extend:将可迭代对象的每一个最小元素追加至末尾/或者给想要加入的元素套上列表符“【】”,就可以将整个字符串添加进去。
li = ["aires","oython","打我发发发"] #定义列表
while 1 : #开始循环
name = input(">>>") #用户输入
if name.strip().upper() == "Q" : #对用户输入的内容去空格,全部改为大写
break #若用户输入内容为q(Q)则退出循环
else :
li.extend(name) #否则就将用户输入的内容分解为最小元素并追加到列表末尾
print(li)
输出结果为:
>>>AIRES
>>>q
['aires', 'oython', '打我发发发', 'A', 'I', 'R', 'E', 'S']
2、删
(1)pop:根据索引删除列表中的元素。
ps:若索引为空默认删除最后一位元素,可返回删除的元素
li = ["aires","oython","打我发发发"] #定义列表
s = li.pop(1) #输入需要删除的索引
print(s,li) #打印删除的元素,和修改后的列表
输出结果为:
oython ['aires', '打我发发发']
(2)remove:按元素删除。
li = ["aires","oython","打我发发发"] #定义列表
li.remove("打我发发发") #输入需要删除的元素
print(li) #打印修改后的列表
输出结果为:
['aires', 'oython']
(3)clear:清空列表(不是删除)
li = ["aires","oython","打我发发发"] #定义列表
li.clear() #清空
print(li) #打印修改后的列表
输出结果为:
[]
(4)del();(列表名称):直接删除列表
li = ["aires","oython","打我发发发"] #定义列表
del(li) #删除列表
print(li) #打印修改后的列表
输出结果为:(因为已经删除,所以打印不出来,直接报错)
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/Aires/笔记暂存区.py", line 13, in <module>
print(li) #打印修改后的列表
NameError: name 'li' is not defined
(5)del【:】(切片删除)
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
del li [1:3] #删除索引切片的元素
print(li) #打印修改后的列表
输出结果为:
['aires', 'gdajgd']
3、改:
(1)直接索引,然后对索引元素重新赋值
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
li[2] = "呵呵哒" #索引列表中想要更改的元素,重新赋值
print(li) #打印修改后的列表
输出结果为:
['aires', 'oython', '呵呵哒', 'gdajgd']
(2)切片改
ps:可迭代对戏指的是由多个元素或字符组成的对象,迭代指的是将可迭代对象拆分为基本元素。
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
li[1:3] = [1,2,3,"aires","嘻嘻"] #用索引切片删除列表中想要更改的元素,迭代式地在原位置添加新元素
print(li) #打印修改后的列表
输出结果为:
['aires', 1, 2, 3, 'aires', '嘻嘻', 'gdajgd']
4、查
(1)for in 循环打印:
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
for s in li: #将列表里的每一个元素循环地赋值给s
print(s) #打印每一次循环时s的值
输出的结果为:
aires
oython
打我发发发
gdajgd
(2)切片索引查询:
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
print(li[1]) #索引查询的结果为元素
print(li[1:3]) #切片查询的结果为列表
输出结果为:
oython
['oython', '打我发发发']
len:计算列表的长度
li = ["aires","oython","打我发发发","gdajgd"] #定义列表
l = len(li) #计算列表li的长度
print(l)
输出结果为:
4
count:计算一个元素在列表中的出现次数
li = ["aires","oython","打我发发发","gdajgd","aires"] #定义列表
num = li.count("aires") #计算一个元素在列表中出现几次
print(num)
输出结果为:
2
index:查找一个元素在列表中的第一索引/或者在需要查找元素后面增加两个索引参数例如:li.index("aries",0,7),索引之间用逗号隔开。用来在切片范围内查找元素出现的第一位置。
li = ["aires","oython","打我发发发","gdajgd","aires"] #定义列表
num = li.index("打我发发发") #查找元素在列表中的索引
print(num)
输出结果为:
2
sort:将列表中的元素从小到大或从大到小排序
li = [5,6,2,15,48,641,]
li.sort() #使列表中的数字从小到大排序 括号中默认为(reverse=False)将False改为True可实现从大到小排序
print(li)
li = [5,6,2,15,48,641,]
li.sort(reverse=True) #使列表中的数字从大到小排序
print(li)
输出结果为:
[2, 5, 6, 15, 48, 641] #从小到大
[641, 48, 15, 6, 5, 2] #从大到小
reverse:将列表中的元素反转排序
li = [5,6,2,15,48,641,]
li.reverse() #将列表的元素反转排序
print(li)
输出结果为:
[641, 48, 15, 2, 6, 5]
嵌套列表:
与列表的操作方法基本相同,可结合字符串的操作方法。
li =["嗨喽","呵呵哒","fire",["aires","Python pycharm","打我发发发"],123] #定义列表
li[2] = li[2].upper() #在列表中将索引的元素全部大写
li[3][0] = li[3][0].upper() #在嵌套列表中索引第3个元素(嵌套列表)中的第0个元素,并将其首字母改为大写
li[3][2]="打我piapiapia" #在嵌套列表中将索引的元素更改
li[3][1] = li[3][1].replace("pycharm","编程") #用字符串的操作方法将嵌套列表中的元素替换
print(li) #打印经过以上操作后修改的列表
输出结果为:
['嗨喽', '呵呵哒', 'FIRE', ['AIRES', 'Python 编程', '打我piapiapia'], 123]
元组:
创建元组的方法很简单,用逗号分开一些值就会自动创建元组(一定要加逗号,否则是创建不了元组的)
"hello","world"
>>>("hello","world")
元组不可更改,但可以索引查找,循环(for in)查找,切片查找。
虽然元组中的元素不能修改,但是若其中那个元素是一个列表,那便可以对列表进行修改。
tu =("嗨喽","呵呵哒","fire",["aires","Python pycharm","打我发发发"],123) #定义元组
tu[3][1]=tu[3][1].upper() #对元祖中的元素内的子元素进行修改
print(tu)
输出结果为:
('嗨喽', '呵呵哒', 'fire', ['aires', 'PYTHON PYCHARM', '打我发发发'], 123)
元祖是可以更新的,运用切片来更新元祖中的元素,例如:
tuple1 = ('Aries','computer','GA-17')
tuple2 = tuple1[:1] + ('game',)+tuple1[1:] #一定要加逗号,加逗号,加逗号
print(tuple2)
('Aries', 'game', 'computer', 'GA-17')
"".join()
将任何可迭代对象(包括但不限于字符串、列表、元组)转化为字符串,并自定义中间连接符(若连接符为空,字符之间会连在一起)
tu =("aires","Python pycharm","打我发发发") #定义元组
a = "-*-链接123-*-".join(tu) #对元祖中的元素迭代拆分并转化为字符串,元素之间用引号内的内容进行连接(引号内可以是任何内容)
print(a)
输出结果为:
aires-*-链接123-*-Python pycharm-*-链接123-*-打我发发发
range 内置无限大的整数,可直接调用,可设定取值范围(同切片)
for i in range(3,10): #循环打印range,取值范围为3,10
print(i)
输出结果为:
3
4
5
6
7
8
9
若从0开始取值,可省略0
for i in range(10): #循环打印range,取值范围为0,10(0可省略)
print(i)
输出结果为:
0
1
2
3
4
5
6
7
8
9
按步长取值 每个要取的数据之间的步长必须相同
for i in range(0,10,3): #循环打印range,范围为0,10,每隔3步长(也就是两个数)取值
print(i)
输出结果为:
0
3
6
9
倒着取值:
ps:倒着取值也同切片,且倒着取时步长不可为0,否则报错,不可为空,否则输出也为空,必须是负数,不可为正数,否则同样为空。
for i in range(10,0,-1): #循环打印range,范围为10,0,每隔-1步长(也就是0)取值 (顾首不顾尾)
print(i)
输出结果为:
10
9
8
7
6
5
4
3
2
1
当需要倒取数据的尾(也就是0)时,可将尾数取值范围设定为-1
for i in range(10,-1,-2): #循环打印range,范围为10,0,每隔-1步长(也就是0)取值 (顾首不顾尾)
print(i)
输出结果为:
10
8
6
4
2
0
结合条件语句可以打印嵌套列表内的所有元素:
li = ["aires","god","boy",["hello","world"],"you","给老子","out"] #定义列表
for i in li: #循环打印li列表并赋值给i
if type(i) == list: #如果i的类型为列表
for k in i : #那就把列表循环打印并赋值给k,然后打印
print(k)
else:
print(i) #否则就继续循环打印列表li并赋值给i
输出结果为:
aires
god
boy
hello
world
you
给老子
out
或者结合索引和range和len 打印索引所对应的元素
li = ["aires","god","boy",["hello","world"],"you","给老子","out"] #定义列表
for i in range(len(li)): #检测li列表的长度,并作为range的取值范围,并循环打印赋值给i,用作下一行代码的索引
if type(li[i]) == list: #如果li列表索引所对应的元素是列表
for k in li[i]: #那就把列表索引所对应的元素循环打印并赋值给k,然后打印k
print(k)
else:
print(li[i]) #否则就继续循环打印li列表索引所对应的元素
输出结果为:
aires
god
boy
hello
world
you
给老子
out
数据类型的分类:可变数据类型(不可哈希),不可变数据类型(可哈希)
可哈希(不可变)的数据类型:bool,元组,int,str
不可哈希(可变)的数据类型:list,dict,set(集合)
字典:
字典由键值对组成,键(key)必须是不可变数据类型;值(value)可以是任何数据类型
优点:查询使用二分查找,查询速度快。可以储存大量的关系型数据类型。
特点:3.5版本之前,字典是无序的,不可索引。可以通过key查找对应的值。
字典的值可以是列表,元组,也可以是字典(嵌套)
增:
(1)用若原本有键,就将新的值将原有的值覆盖,若没有键,就添加新的值。
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
dic["game"] = "聚爆" #没有键就将键值对追加于字典末尾,若原本有键,那就将其值覆盖
print(dic)
输出结果为:
{'name': 'aires', 'age': 18, 'hobby': 'play computergame', 'high': 163, 'weight': '52kg', 'game': '聚爆'}
(2)setdefault() (k,v)没有键就将键值对追加于字典末尾,若原本有键,不作任何改变
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
dic.setdefault("game","聚爆") #没有键就将键值对追加于字典末尾,若原本有键,不作任何改变
print(dic)
输出结果为:
{'name': 'aires', 'age': 18, 'hobby': 'play computergame', 'high': 163, 'weight': '52kg', 'game': '聚爆'}
删:
(1)pop() (k) 删除k所对应的v
若要删除的字典中没有要删除的键,就会报错。而当不确定是否有这个键时,可以先对其值进行自定义,通常定为None,也可以是别的。
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
a = dic.pop("game","没有这个键") #可打印删除的键所对应的值,若不确定是否有这个键,可先对其值进行自定义,通常为None
print(a)
输出结果为:
没有这个键
(2)popitem() 删除字典的最后一位键值对。有返回值,返回的是元组。
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
dic.popitem() #删除最后一位键值对
print(dic)
输出结果为:
{'name': 'aires', 'age': 18, 'hobby': 'play computergame', 'high': 163}
(3)clear() 清空字典
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
dic.clear() #清空,但不是删除
print(dic)
输出结果为:
{}
(4)del 删除字典
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
del dic #删除
print(dic)
输出结果为: 没有结果,因为已删除,所以报错
Traceback (most recent call last):
File "C:/Users/Administrator/PycharmProjects/untitled/Aires/练习区.py", line 9, in <module>
print(dic)
NameError: name 'dic' is not defined
(5)del dic["k"] 删除键所对应的键值对,若字典中没有要删除的键,则报错。
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
del dic["name"] #删除键所对应的键值对,若字典中没有要删除的键,则报错。
print(dic)
输出结果为:
{'age': 18, 'hobby': 'play computergame', 'high': 163, 'weight': '52kg'}
改:
(1)将键原有的值,用新的值覆盖(同增的方法)
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
dic["name"] = "聚爆" #将键原有的值,用新的值覆盖
print(dic)
输出结果为:
{'name': '聚爆', 'age': 18, 'hobby': 'play computergame', 'high': 163, 'weight': '52kg'}
(2)dic.updata(dic2) 将dic2的值更新到dic里(已有的键覆盖,没有的增加)
dic = {
"name":"aires",
"age":18,
}
dic2 = {"game":"聚爆",
"name":"python"
}
dic.update(dic2) #将dic2的值更新到dic里
print(dic)
输出结果为:
{'name': 'python', 'age': 18, 'game': '聚爆'}
查:
(1)keys():查询字典中的键(k)。输出类型为字典的键(dict_keys)(字典独有类型) 数据类型为列表
(2)values():查询字典中的值(v)。输出类型为字典的值(dict_values)(字典独有类型)数据类型同为列表
(3)items():查询字典中的键和值(k,v)。输出类型为字典的键和值(dict_items)(字典独有类型)数据类型同为列表,但列表内为元组
dic = {
"name":"aires",
"age":18,
}
a = dic.keys() #查询字典中的键
print(a,type(a))
dic = {
"name":"aires",
"age":18,
}
a = dic.values() #查询字典中的值
print(a,type(a))
dic = {
"name":"aires",
"age":18,
}
a = dic.items() #查询字典中的键和值
print(a,type(a))
输出结果为:
dict_keys(['name', 'age']) <class 'dict_keys'> #查询到的键及其类型
dict_values(['aires', 18]) <class 'dict_values'> #查询到的值及其类型
dict_items([('name', 'aires'), ('age', 18)]) <class 'dict_items'> #查询到的键和值及其类型
(4)get()(key,返回的值)可查找打印键所对应的值,若不确定是否有这个键,可对其值进行自定义,通常为None 可常用这种方法。
dic = {
"name":"aires",
"age":18,
"hobby":"play computergame",
"high":163,
"weight":"52kg",
}
s = dic.get("game","没有此键") #可查找打印键所对应的值,若不确定是否有这个键,可对其值进行自定义,通常为None
print(s)
输出结果为:
没有此键
(5)for in 循环打印
1)循环打印键
dic = {
"name":"aires",
"age":18,
"hobby": "play computergame",
"high": 163,
"weight": "52kg",
}
for i in dic: #循环打印键,同for i in dic.keys: 不写默认为循环打印键
print(i)
输出结果为:
name
age
hobby
high
weight
2)循环打印值
dic = {
"name":"aires",
"age":18,
"hobby": "play computergame",
"high": 163,
"weight": "52kg",
}
for i in dic.values(): #循环打印值
print(i)
输出结果为:
aires
18
play computergame
163
52kg
3)循环打印键和值(结果为元组)
dic = {
"name":"aires",
"age":18,
"hobby": "play computergame",
"high": 163,
"weight": "52kg",
}
for i in dic.items(): #循环打印键和值
print(i)
输出结果为:
('name', 'aires')
('age', 18)
('hobby', 'play computergame')
('high', 163)
('weight', '52kg')
对应关系
a,b = 1,2
print(a,b)
a,b = [1,2],[3,4]
print(a,b)
a,b = (1,2),(3,4)
print(a,b)
a,b = "name","age"
print(a,b)
a,b = 1,2
a,b = b,a #关系互换
print(a,b)
输出结果为:
1 2
[1, 2] [3, 4]
(1, 2) (3, 4)
name age
2 1 #关系互换
for循环打印也可以关系对应地打印键和值,输出为字符串类型
dic = {
"name":"aires",
"age":18,
"hobby": "play computergame",
"high": 163,
"weight": "52kg",
}
for k,v in dic.items(): #用对应关系循环打印键和值,输出为字符串类型
print(k,v)
输出结果为:
name aires
age 18
hobby play computergame
high 163
weight 52kg
若字典的值为列表,修改字典的值
若字典中键值对中的值为列表,可按修改列表的方法修改其值,其他de类型数据同理
例如: 追加dic["k"].apeend("v") v为需要追加的值
dic = {
"name":"aires",
"age":18,
"hobby": ["play computergame","play"],
"high": 163,
"weight": "52kg",
}
dic["hobby"].append("编程") #hobby所对应的值为列表,可按修改列表的方式修改值
print(dic)
输出结果为:
{'name': 'aires', 'age': 18, 'hobby': ['play computergame', 'play', '编程'], 'high': 163, 'weight': '52kg'}
按索引,将索引所对应的元素作为字符串修改 例如:首字母大写
dic = {
"name":["aires","zhang"],
"age":18,
"hobby": ["play computergame","play"],
"high": 163,
"weight": "52kg",
}
dic["name"][1] = dic["name"][1].capitalize() #索引修改,将索引所对应的元素首字母大写
print(dic)
输出结果为:
{'name': ['aires', 'Zhang'], 'age': 18, 'hobby': ['play computergame', 'play'], 'high': 163, 'weight': '52kg'}
嵌套中根据键修改值,也可添加或别的各种操作
dic = {
"name":["aires","zhang"],
"age":18,
"hobby": ["play computergame","play"],
"game":{"单机":"聚爆","网络":"王者"}
}
dic["game"]["网络"] = "无" #嵌套中根据键修改值,也可添加或别的各种操作
print(dic)
输出结果为:
{'name': ['aires', 'zhang'], 'age': 18, 'hobby': ['play computergame', 'play'], 'game': {'单机': '聚爆', '网络': '无'}}
后人发,先人至。扎实的基础可以更快的铸就高楼大厦!