字典,#k-v
l = ['韩敏','1111','423242','Qq.com','北京']#list

info = {
    'name':'韩敏',
    'phone':11111,
    'qq':2342352352,
    'email':'hamin@qq.com',
    'addr':"北京"
 }#字典
        
字典的增删改查

#新增
方式一:info['phone'] = 110

存在‘name’直接修改值,如果不存在添加key和value
方式二:info.setdefault('name','hanmin2')

#修改
info['phone'] = 110  #key存在修改,不存在增加

    #删除

info.pop('qq')

del info['qq']
#随机删除一个key
info.popitem()

    #取值

方式一print(info['phone1'])
方式二 print(info.get('phone‘))
*若取不存在的key时方式一报错,方式二none

例如:

print(info.get('sex',''))  #sex取到正常取值,取不到返回男

#获取值

print(info.keys())#获取字典里所有的key
print(info.values())#获取字典里面所有的value
#清空
 info.clear()
#两个字典合并,交集替换,并集添加
info.update(stu) 
#判断字典的key是否存在
print('phone' ininfo) 

#多层字典的操作
print('==================')stu_info  = {
    'liudonghai':{
        'house':['三环','四环','五环'],
        'car':{
            'china':['byd','五菱宏光','Hongqi'],
            'jap':['丰田','本田'],
            'Genmany':{
                'ben-z':2,
                'bmw':3,
                'audi':5
            }
        }
    }
}

#1、刘东海又买了一辆宝马
stu_info['liudonghai']['car']['Genmany']['bmw']+=1
print(stu_info)
#2、刘东海把byd扔掉了
stu_info['liudonghai']['car']['china'].pop('byd')
print(stu_info)

注册的程序

#1、输入账号密码
#2、账号如果不存在的话,可以注册
#3、存在的话要提示账号已经存在。
accounts = {
    "liuzhao":"123456",

    "liudonghai":"123456",

    "zhaowenming":"afssdfsdf",

    "xiaoming":"xxxx"

}
for i in range(3):

    username = input('username:')

    passwd = input('passwd:')

    if username in accounts:

        print('用户已存在,不能注册!')

    else:

        accounts.setdefault(username,passwd)

        print('注册成功!')



# print('accounts',accounts)



for i in accounts:

    print(i)
循环字典
accounts = {
    "liuzhao":"123456",
    "liudonghai":"123456",
    "zhaowenming":"afssdfsdf",
    "xiaoming":"xxxx",
    "users":[1,2,3,4]
}
for k in accounts:#直接循环字典每次循环的时候取到的是字典的key
 print("%s => %s"%(k,accounts[k]))同时取到key和value "liuzhao => 123456"
print('==================')

 for k,v in accounts.items():
print('%s => %s'%(k,v)) 同时取到key和value速度慢些#list和字符串循环,都是循环元素
#list和字符串循环,都是循环元素
l  = ['liuzhao', 'liudonghai', 'zhaowenming', 'xiaoming', 'users']
s='liuzhaosefw423fwliuzhao'
 for i in l:    
 print(i) 
#角标循环
print(list(range(1,5))) #range(5)  [0,1,2,3,4]
print(i)
元组
元组是一个list,它不能修改,通过下标取值
*另外字符串也不能修改

定义  t = ('114.23.12.1','root','123456',3306)

操作
t.count('1')#统计元组中1出现的次数

t.index('root')#索引元组中‘root’的下标值

文件读写
操作
#定义,文件只能读不能写
#路径前需要加'r'
f = open(r'users.txt',encoding='utf-8')#file() #python2

result = f.read() #获取文件内容
print(result)
f.close()#关闭文件
文件读写模式 默认为读模式
f = open('users.txt','r')#读 只能读不能写
f = open('users.txt','w')#写 只能写不能读
f = open('users.txt','a')#追加
#读模式,只能读,不能写,打开不存在的文件会报错
#写模式,只能写不能读,会覆盖文件以前的内容,文件不存在的会创建
#追加模式,在原来文件的内容上增加新内容,文件不存在的会创建,只能写不能读
f = open('users.txt','r+')#读写模式
f = open('users.txt','w+')#写读模式    
f = open('users.txt','a+')#追加读模式
文件指针操作
f = open(r'test.txt','a+',encoding='utf-8')#r就是原字符
f.seek(0)#读写最保险用法
# print(f.read())#读取文件里面所有的内容
# print('8====',f.readline())#读取一行的内容
# print('readlines',f.readlines())#读取一行的内容,返回字符串格式
# f.seek(0)#移动文件指针
#1、只要是r有关,打开不存在的文件都会报错。
#2、只要和w有关,都会清空原来的文件
#3、a+文件指针默认是在末尾的,如果想读到内容,先要把文件指针移动到最前面

f.writelines(l)  #传一个list的话,他会自动帮你循环,把list里面每一个
或者
l = ['a\n','b\n','c\n','e\n','g\n']
f = open('nhy.txt','w',encoding='utf-8')
for i in l:
f.write(i+'\n')
f.close()

练习见#2-2课上练习-监控日志

高效处理文件
f = open('nhy.txt',encoding='utf-8')
for line in f:#获取文件中每一行的内容
print('每次循环的内容是:',line)

修改文件
#方式一简单直接粗暴的方式
1、读取内容
2、替换
3、清除原来文件的内容
4、把新的内容写进去
f = open('nhy.txt','a+',encoding='utf-8')
f.seek(0)
result = f.read()
content = result.replace('xiaolan','dalan')#替换
f.seek(0)
f.truncate()#清空文件内容
f.write(content)
f.close()

f2 = open('nhy.txt','w')
f2.write(content)

#方式二逐行处理

    #1、打开a文件,在打开一个b文件
#2、从a文件读一行,修改,修改之后写到b文件里
#3、删除a文件,把b文件的名字改成a文件
f = open('nhy.txt',encoding='utf-8')
f2 = open('nhy2.txt','w',encoding='utf-8')

for line in f:
    result = line.upper()
    f2.write(result)
f.close()
f2.close()

import os
os.remove('nhy.txt')
os.rename('nhy2.txt','nhy.txt')

 

不用关闭文件的方式

with open('nhy.txt') as f, open('nhy2.txt','w') as f2: # f = open('nhy.txt')
    f = f.read()
    f2.write('xx')