测开2 - Python2(字典、字符串方法、元组)

时间:2022-12-12 16:49:01

 一、字典(dict)

在第一次的作业中用户名和密码分别存在一个 list,且用户名和密码需要一一对应,这种方式存储起来比较费劲,这时候可以用字典来装下用户的用户名和密码信息,这是字典最简单的应用:

accounts = {
    'Lily':'123456',
    'Lucy':'aaaaaa',
    'Emily':'hahaha'
}

 里面的信息是 'key:value' 的形式,一个个的键值对之间用 ',' 分割,这种方式取值也方便,还可以用来存取一个班的学生信息,即字典的嵌套。存储的信息一目了然,方便读取,不过在写的时候要注意格式。

stus = {
    'a':{
        'phone':'13511111111',
        'qq':'123456',
        'addr':'new york'
    },
    'b':{
        'phone':'15677777777',
        'qq':'00000000',
        'addr':'los angelas'
    }
}

上面这个字典,取到 qq = 123456 的方式是: stus['a']['qq'] 

另外,字典是无序的,打印字典时看输出可以看出来这一点。

下面总结下字典的一些方法:

增:

accounts['april'] = 'abc123'    #key存在时改变原有值
accounts.setdefault('Lily','111111')    #key 存在时不改变原有值

删:

accounts.pop('Lily')
del accounts['Lily']

改:

直接通过 key 查找的方式,拿到后重新赋值,相当于「增」的第一个方法

查:

accounts['abby']    #找不到 key 时报错,不推荐使用
accounts.get('abby')    #找不到 key 时返回 None
accounts.get('abby','abbie')    #找不到 ‘abby’ 这个 key 时,返回 ‘abbie’

字典的拼接:

accounts.update(stus)    #把 stus 拼接在 accounts,并把结果更新在 accounts

循环:

有两种方式,一种是 k 的循环,一种是 k 和 v 的循环。如下:

1 #第一种
2 for a in accounts:
3     print(a)    #取到的是 key
4     print(accounts[a])    #通过 key 取到 value
5 
6 #第二种
7 for k,v in accounts.items():    #items() 方法用于取到字典的所有 key 和 value
8     print(k,v)    #直接取到 key 和 value,但第一种性能更好,这种方式适合小批量数据

除此之外,列表、字符串都可以循环。

简单总结:第一次学字典的时候,很容易跟 list 搞混,然后忘的又很快。这次联系做的及时,暂时还记得住,没混。但在作业中遇到一个让我脑袋发懵的问题,就是实际中去定义嵌套字典,写着写着乱掉了,左一个字典右一个字典,这一个变量那一个变量,后来还是把我要定义的字典样式在本子上写下来猜得以解决。在这里先写一下,就当再练一回。

测开2 - Python2(字典、字符串方法、元组)

上图中两个字典,一个 users,一个 info,info 作为我输入的用户(key:username)的 value,所以要定义两个字典。然后 users 这个字典中,key 的变量名统一为 username,value 的变量名为 info{}。这样,就可以把另一个字典 info 当作 value 赋值给 username。

users = {}
info = {}

list = ['userA','pwdB']    
username = list[0]

users[username] = info    #相当于给字典增加值
info['password'] = list[1]    #给嵌套内的字典赋值

5.29更新:

考虑了一下,觉得字典套字典的方式实在太硬了…转念一想可以字典套 list,果断改了!不过字典套字典的处理也是学到了,万一以后用得着呢!

 

二、字符串方法

字符串的方法太多了…简单整理下备注他们是干嘛的,方便日后需要的时候自己看。需要注意的是,字符串的所有方法都不改变字符串原有的值,都会返回一个新的值,因为字符串无法修改。

去空格:

测开2 - Python2(字典、字符串方法、元组)

找某个字符的下标:

测开2 - Python2(字典、字符串方法、元组)

其他(包含了最后一个方法,字符串格式化,与上次介绍的不同之处在于,这里传的是自己给的值,不是变量的):

测开2 - Python2(字典、字符串方法、元组)

进一步,format 和 format_map:

测开2 - Python2(字典、字符串方法、元组)

字符串中的重要方法:

1. string 转 list

month = 'January,February,March,April,May'

monthList = month.split(',')

print(monthList)    #结果为:monthList:[‘January’,'February','March','April','May']

2. list 也可以转为 string

monthList = [‘January’,'February','March','April','May']

month = ','.join(monthList)    #凭记忆写竟然写成:month = monthList.join(',')

我之所以会写错,是因为没有了解清楚,join() 方法也是一个字符串方法,需要跟在某个字符串后面使用。list 转 string 的时候,就是把‘,’ 当作一个字符串,使用 join() 方法,用 ‘,’ 把后面传入 list 的元素隔开并拼接成一个 string。再说 split(),这个方法就是用传在 split() 的字符(串)去分割已知字符串,并把分割后的部分放在 list 中。

通过整理收获很大,以后应该不会乱用这俩方法了8。

 

三、元组

元组也是一个 list,但是跟 string 一样不能修改

定义方式: t = (1,2,3,4) 

几个方法和属性:

测开2 - Python2(字典、字符串方法、元组)

适合存储一些日常用,但不可以随意更改的内容,比如数据库的登录信息等。

 

下一篇写文件操作。