python自动化测试学习笔记-2-字典、元组、字符串方法

一、字典

Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串、数字、元组等其他容器模型。

字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

f = {key1 : value1, key2 : value2 }

键必须是唯一的,但值则不必。

值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d)

查看打印结果:可以看到字典里面的排序是无序的。

1、查看元素

如果我们要查看某个键值的值,把相应的键放入方括弧,字典没有下标,直接取key,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d)print(d[‘name‘])

执行查看结果:

还可以用get方法获取键值,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d)print(d[‘name‘])print(d.get(‘name‘))

差看执行结果:

当get的键值不存在的时候会返回默认值:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d.get(‘weight‘))

查看执行结果:

None

2、增加元素

    如果需要增加元素就直接在方括号中写入key名,然后写入相应的值,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}d[‘phone‘]=‘13102011111111‘print(d)

查看执行结果,加入了phone:

setdefault()方法和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default值,我们看一下和get的区别:


d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d.get(‘weight‘,120))print(d)t={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(t.setdefault(‘weight‘,130))print(t)

查看执行结果:

120
{‘age‘: 12, ‘name‘: ‘pei‘, ‘money‘: 19000, ‘sex‘: ‘女‘, ‘addr‘: ‘昌平‘}
130
{‘age‘: 12, ‘name‘: ‘pei‘, ‘sex‘: ‘女‘, ‘addr‘: ‘昌平‘, ‘money‘: 19000, ‘weight‘: 130}

可以看到,get的key不存在的时候,只会返回默认值,不会添加到字典中,setdefault的可以不存在的场合,会返回默认值,并把key 添加到字典中,并默认值赋值;

3、修改元素

如果需要修改字典中的键值,同样也是在方括号中写入已有的key值,然后写入相应的值,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}d[‘name‘]=‘yingfei‘print(d)

查看执行结果:

4、删除字典元素

如果只需删除一个元素,可以用del命令:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}del d[‘name‘]

查看执行结果:

{‘addr‘: ‘昌平‘, ‘money‘: 19000, ‘sex‘: ‘女‘, ‘age‘: 12}

如果需要清空字典表,用clear方法,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}d.clear()print(d)

查看执行结果:

{}

如果需要删除字典表,可以用del,例如:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}del dprint(d)

查看执行结果:

我们可以看到,d这个字典已经不存在了

和列表一样,还可以用pop()方法删除一个元素
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}d.pop(‘name‘)print(d)

查看执行结果:

{‘sex‘: ‘女‘, ‘addr‘: ‘昌平‘, ‘age‘: 12, ‘money‘: 19000}

popitem()方法也可以用来删除,由于字典是无序的,所以popitem方法会随机删除字典中的一个元素,例如

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}d.popitem()print(d)

查看执行结果:

{‘name‘: ‘pei‘, ‘age‘: 12, ‘addr‘: ‘昌平‘, ‘sex‘: ‘女‘}

 5、字典的其他方法

keys以列表形式返回一个字典所有的键;

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d.keys())

执行结果:

dict_keys([‘addr‘, ‘name‘, ‘sex‘, ‘age‘, ‘money‘])

values,以列表返回字典中的所有值;

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}print(d.values())

查看执行结果:

dict_values([‘女‘, ‘昌平‘, 12, ‘pei‘, 19000])

6、循环

我们对字典进行循环操作,看一下得到的结果:

d={‘name‘:‘pei‘,‘age‘:12,‘sex‘:‘女‘,‘addr‘:‘昌平‘,‘money‘:19000}for k in d:    print(k)for k in d:    print(k,d.get(k))for k in d:    print(k,d[k])for k,v in d.items():    print(k,v)查看执行结果:moneynameaddrsexage我直接对列表循环,我们得到的只有key;要想得到key的value值,需要单独取获取;

money 19000name peiaddr 昌平sex 女age 12

money 19000name peiaddr 昌平sex 女age 12
item方法,以列表返回可遍历的(键, 值) 元组数组,
money 19000name peiaddr 昌平sex 女age 12

练习:

下面我们看一下列表与字典的实际应用,通常情况下,两者都是结合使用的。例如:

stus = {    ‘pei‘: {        ‘age‘: 18,        ‘sex‘: ‘男‘,        ‘addr‘: ‘昌平区‘,        ‘money‘: 10000000,        ‘jinku‘: {            ‘建行卡‘: 80000,            ‘工商卡‘: 800000,            ‘招商卡‘: 8000000        }    },    ‘li‘: {        ‘age‘: 19,        ‘sex‘: ‘女‘,        ‘addr‘: ‘昌平区‘,        ‘money‘: 10000000,        ‘huazhuangpin‘: [‘chanle‘,‘haha‘]    },    ‘wang‘: {        ‘age‘: 19,        ‘sex‘: ‘女‘,        ‘addr‘: ‘昌平区‘,        ‘money‘: 10000000,        "bag": {            ‘lv‘: ‘一车‘,            ‘鳄鱼‘:10        }    },}

以上,

1.我们要取到‘pei’的招商卡的金额:

print(stus[‘pei‘][‘jinku‘][‘招商卡‘])
查看执行结果:8000000

2.我们要取到‘li’的化妆品种类

print(stus[‘li‘][‘huazhuangpin‘])
查看执行结果:[‘chanle‘, ‘haha‘]

3.我们查看‘wang’的bag的种类:

print(stus[‘wang‘][‘bag‘].keys())

查看执行结果:dict_keys([‘lv‘, ‘鳄鱼‘])

4.如果我们查‘wang’的bag的总数量呢:

我们可以直接使用内置的函数sum(),如下:

print(sum(stus[‘wang‘][‘bag‘].values()))

查看执行结果:100

还可以用相加的方法:

ls=stus[‘wang‘][‘bag‘].values()sum=0for i in ls:    sum=sum+iprint(sum)

查看执行结果:100

再来做一个小实验:

#####################################################

#用户注册:存入字典表中,注册时进行非空验证,,验证密码和确认密码是否一致,已经存在的不能重复注册


user={}while True:    username=input(‘请输入您的账号:‘).strip()    passwd=input(‘请输入您的密码:‘).strip()    cpasswd=input(‘请确认您的密码:‘).strip()    if username and passwd:        if username  in user:            print(‘用户已经存在,请重新输入!‘)

else:            if passwd==cpasswd:                print(‘恭喜您,注册成功!‘)                user[username]=passwd                break            else:                print(‘两次密码不一致,请重新输入!‘)

else:        print(‘用户名或密码不能为空!请重新输入。‘)

while True:    usr=input(‘请输入您的账号:‘).strip()    pwd=input(‘请输入您的密码:‘).strip()    if usr and pwd :        if usr in user:            if pwd==user[usr]:                print(‘恭喜您登陆成功!‘)                break            else:                print(‘密码不正确,请重新登陆!‘)        else:            print(‘用户名密码不存在,请重新登陆!‘)    else:        print(‘用户名或密码不能为空,请重新登陆‘)
 

大家执行一下看一下结果吧~

元组

Python的元组与列表类似,不同之处在于元组的元素不能修改。

元组使用小括号,列表使用方括号。元组与字符串类似,下标索引从0开始,可以进行截取,组合等。

1、创建

元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可。

如下:

a=(1)b=(‘111‘,‘222‘,‘333‘)#元祖也是list,只不过不能变print(a)print(b)

执行查看结果:

1
(‘111‘, ‘222‘, ‘333‘)

2、修改元组

元组中的元素值是不允许修改的:

b=(‘111‘,‘222‘,‘333‘)print(b)b[0]=12print(b[0])

我们执行看一下,看到执行的结果报错了。

TypeError: ‘tuple‘ object does not support item assignment

#可变变量:创建后可以修改
#不可变变量:一旦创建后,不能修改,如果修改只能重新定义,例如元祖和字符串

mysql2=(‘182.168.55.14‘,8080,‘pei‘,‘123456‘)#不可变,防止被修改print(mysql2.count(‘m‘))#统计次数print(mysql2.index(‘pei‘))#下标位置

查看执行结果:

0
2

3、切片

元组的切片与列表切片类似,用:进行分割



b=(‘111‘,‘222‘,‘333‘,‘444‘)print(b[0:5:2])

查看执行结果:

(‘111‘, ‘333‘)

我们来做个小程序:

如果列表中的数除2取余数不为0的,则从列表中删除:

li=[1,1,2,3,4,5,6,7,8,9]
for i in li:    if i%2!=0:        li.remove(i)print(li)

运行以上程序,查看结果:

[1, 2, 4, 6, 8]

我们看到以上程序【1】没有被删除,那是因为我们直接修改了列表,进行了删除操作,当遇到第一个1时,进行了删除,列表变为[1,2,3,4,5,6,7,8,9],此时循环的角标变为1,取到的是2,略过了[1];

所以循环list的时候不能删除列表中的数据,角标会进行变化;

这个时候我们就需要拷贝一份新的列表进行循环:

li=[1,1,2,3,4,5,6,7,8,9]li2=li[:]#深拷贝,内存地址会变li3=li#浅拷贝,内存地址不变print(li2)print(li3)print(id(li))print(id(li2))print(id(li3))for i in li2:    if i%2!=0:        li.remove(i)print(li)

查看执行结果:
[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
[1, 1, 2, 3, 4, 5, 6, 7, 8, 9]
13995656
13967944
13995656
[2, 4, 6, 8]

我们看到了,通过切片拷贝的内容和直接赋值的内容是一样的,但地址是不一样的。

我们叫做深拷贝和浅拷贝,深拷贝的时候删除原有列表的数据,不影响拷贝的列表。

字符串方法

下面列举字符串常用的方法

name=‘a     besttest    best   ‘name1=‘a     besttest   best‘name2=‘   a  besttest   best\n‘print(name.strip())print(name)#方法不会改变原来字符串的值newname=name.strip()#strip()不填的时候,默认去掉首尾的空格和换行符,中间的去不掉print(name1.strip(‘best‘))#去掉末尾的字母print(name2.lstrip())#去掉左侧的空格print(name.rstrip())#去掉右边的空格和换行print(name2.rstrip())#去掉右边的空格和换行print(name.count(‘b‘))#计数print(name.capitalize())#首字母大写print(name.center(50,‘#‘))#居中index = name.find(‘b‘)#不存在的时候返回-1print(index)index2=name.index(‘b‘)#与find的区别是,找不到的时候报错print(index2)name.upper()#把所有的小写字母都变成大写name.lower()#把所有的小写字母都变成小写file_name=‘a.txt‘#name.endswith()#判断字符串是以什么结尾的print(file_name.endswith(‘.txt‘))name.startswith()#判断字符串是以什么开头的sql=‘select,update,inster,drop,create,alter‘sql1=‘select * from test‘print(sql1.startswith(‘select‘))

#format字符串格式化f=‘{name} 欢迎‘print(f.format(name=‘pei‘))d={‘name‘:‘ppp‘,‘age‘:13}print(f.format_map(d))#字符串格式化,传进去的是字典new_sql=sql1.replace(‘select‘,‘updata‘)#字符串替换print(new_sql)

#isdigit是否是数字print(‘Aa123123‘.isdigit())print(‘adsa‘.islower())#判断全是小写print(‘asdas ‘.isupper())#判断全是大写print(‘34ad5‘.isalnum())#是否包含数字或字母print(‘asd as‘.isalpha())#是否是英文字母

st=‘a b cd e f g‘#st_list=st.split(‘,‘)#如果什么都不写的话,是按照空格进行分割st_list=st.split()print(st_list)slit=[‘a‘,‘b‘,‘c‘]#res=‘,‘.join(slit)res=‘*‘.join(slit)#join 通过某个字符把字符串连接起来s=‘sfsdfsdf‘new_s=‘&‘.join(s)#链接可循环的数据print(new_s)p={‘name‘:‘asd‘,‘sex‘:‘nan‘,‘age‘:12}print(‘@‘.join(p))#print(‘#‘.join(p.values()))#int类型的不能进行拼接

文件读写

#########################################################3# #文件读写f=open(‘test2‘,‘a+‘,encoding=‘utf-8‘)#报GDK的错误,添加utf-8,打开文件# #print(f.read())#print(f.read())#a模式文件指针在最末尾# #读的时候有效,写的时候无效# f.write(‘呵呵‘)f.seek(0)#设置指针位置# print(f.readlines())#读取文件的所有内容,并把内容写成list格式# print(f.readline())#读一行# st=[‘1dwe‘,‘2we‘,‘3we‘,‘4we‘,‘5we‘]# #f.write(st)只能写入字符串# f.writelines(st)#可写入一个可迭代的元素# print(f.read())#for i in f:    print(i)f.close()#关闭文件#读 r 打开文件没有指定模式,那么默认是读;r+模式是读写模式,文件不存在的时候会报错#写  w w模式会清空原文件,w只能写,不能读; w+ 写读模式,会清空文件内容#追加 a   a+追加读写

#####################################################3#高效读文件的方法#fw=open(‘test2‘,encoding=‘utf-8‘)count=1for f in  fw:    f=f.strip()    stu_lst=f.split(‘,‘)    print(stu_lst)    #直接循环文件对象的话,循环文件里面的每一行

# fw.close()

原文地址:https://www.cnblogs.com/phoebes/p/8146016.html

时间: 2024-11-01 19:11:46

python自动化测试学习笔记-2-字典、元组、字符串方法的相关文章

python自动化测试学习笔记-6urllib模块&request模块

python3的urllib 模块提供了获取页面的功能. urllib.request.urlopen(url, data=None, [timeout, ]*, cafile=None, capath=None, cadefault=False, context=None) -         url:  需要打开的网址 -         data:Post提交的数据 -         timeout:设置网站的访问超时时间 直接用urllib.request模块的urlopen()获取页

Python基础学习笔记(七:字符串格式化)

结果

python 学习笔记 三 字典

字典 Python的高效的key/value哈希表结构叫做"dict", dict的内容可以写成一系列的key:value对并放入{ }中, 相当于: dict = {key1:value1, key2:value2, ...}, 一个空的字典就是俩个大括号{ }. 下面是从一个空字典创建字典以及一些关键点: 数字, 字符串和元组可以作为字典的key, value可以是任何类型(包括字典). ## Can build up a dict by starting with the the

python基础教程_学习笔记3:元组

元组 元组不能修改:(可能你已经注意到了:字符串也不能修改.) 创建元组的语法很简单:如果用逗号分隔了一些值,那么你就自动创建了元组. >>> 1,3,'ab' (1, 3, 'ab') 元组也是(大部分时候是)通过圆括号括起来的. >>> (1,3,'13') (1, 3, '13') 空元组可以用没有内容的两个圆括号来表示. 如何实现包括一个值的元组呢? >>> (5) 5 >>> ('ab') 'ab' >>>

3. 蛤蟆Python脚本学习笔记三字符串

3. 蛤蟆Python脚本学习笔记三字符串 本篇名言:"平静的湖面只有呆板的倒映,奔腾的激流才有美丽的浪花!幸福不是靠别人来布施,而是要自己去赢取!生命的意义在不断挑战自己,战胜自己!" 这个本来放在昨天的,由于昨晚又太晚了,所以就搁在这里了.赶紧看看吧. 字符串两边都用双引号或者单引号包起来.否则就使用转移符号来转移一下. 输入在一起可以直接拼接. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48112507

[简明python教程]学习笔记2014-05-05

今天学习了python的输入输出.异常处理和python标准库 1.文件 通过创建一个file类的对象去处理文件,方法有read.readline.write.close等 [[email protected] 0505]# cat using_file.py #!/usr/bin/python #filename:using_file.py poem='''Programing is fun when the work is done use Python! ''' f=file('poem.

2. 蛤蟆Python脚本学习笔记二基本命令畅玩

2. 蛤蟆Python脚本学习笔记二基本命令畅玩 本篇名言:"成功源于发现细节,没有细节就没有机遇,留心细节意味着创造机遇.一件司空见惯的小事或许就可能是打开机遇宝库的钥匙!" 下班回家,咱先来看下一些常用的基本命令. 欢迎转载,转载请标明出处:http://blog.csdn.net/notbaron/article/details/48092873 1.  数字和表达式 看下图1一就能说明很多问题: 加法,整除,浮点除,取模,幂乘方等.是不是很直接也很粗暴. 关于上限,蛤蟆不太清楚

Python Click 学习笔记(转)

原文链接:Python Click 学习笔记 Click 是 Flask 的团队 pallets 开发的优秀开源项目,它为命令行工具的开发封装了大量方法,使开发者只需要专注于功能实现.恰好我最近在开发的一个小工具需要在命令行环境下操作,就写个学习笔记. 国际惯例,先来一段 "Hello World" 程序(假定已经安装了 Click 包). # hello.py import click @click.command() @click.option('--count', default

[简明python教程]学习笔记之编写简单备份脚本

[[email protected] 0503]# cat backup_ver3.py #!/usr/bin/python #filename:backup_ver3.py import os import time #source source=['/root/a.sh','/root/b.sh','/root/c.sh'] #source='/root/c.sh' #backup dir target_dir='/tmp/' today=target_dir+time.strftime('