p86-
#把list1 转 成 list2
list1 = [
{'name':'tom','hobby':'王者'},
{'name':'tom','hobby':'游泳'},
{'name':'tom','hobby':'电影'},
{'name':'jerry','hobby':'王者'},
{'name':'jerry','hobby':'音乐'},
{'name':'jerry','hobby':'吃'},
]
# list2=[
# {'name':'tom','hobby_list':['王者','游泳','电影',]},
# {'name':'jerry','hobby_list':['王者','音乐','吃',]}
# ]
list2 = []
for l1 in list1:
flag = False
for l2 in list2:
if l1['name'] == l2['name']:
flag=True
if flag==False:
dict1={}
dict1['name']=l1['name']
list3 = [l1['hobby']]
dict1['hobby_list']=list3
list2.append(dict1)
else :
for l3 in list2:
if l1['name'] == l3['name']:
l3['hobby_list'].append(l1['hobby'])
print(list2)
#或者
list2=[]
for l1 in list1:
for l2 in list2:
if l1['name']==l2['name']:
l2['hobby_list'].append(l1['hobby'])
break
else:
list2.append({'name':l1['name'],'hobby_list':[l1['hobby']]})
print(list2)
time模块
-
import time
-
print(time.time()) #获取时间戳,从时间原点(1970年1月1日0点)到现在经过的秒数,
-
print(time.gmtime()) #
import time print(time.gmtime()) #return time.struct_time(tm_year=2020, tm_mon=7, tm_mday=15, tm_hour=9, tm_min=56, tm_sec=26, tm_wday=2, tm_yday=197, tm_isdst=0)
print(time.strftime('%Y/%m/%d %H:%M:%S')) #return 2020/07/15 17:57:31
print(time.localtime())
#return time.struct_time(tm_year=2020, tm_mon=7, tm_mday=15, tm_hour=17, tm_min=57, tm_sec=55, tm_wday=2, tm_yday=197, tm_isdst=0)
print(time.strptime('2020 1 1','%Y %m %d')) #时分秒默认为0
print(time.strptime('2020 2','%Y %m')) #日默认为1 时分秒默认为0
date模块
import datetime
d=datetime.date(2020,7,15)
print(d) #return 2020-07-15
print(d.year) #return 2020
print(d.day) #return 15
t = datetime.time(17,3,21)
print(t) #return 17:03:21
print(t.hour) #return 17
dt = datetime.datetime(2020,7,15,18,4,25)
print(dt) #return 2020-07-15 18:04:25
print(dt.year) #return 2020
print(dt.minute) #return 4
#timedelta #时间变化量
td = datetime.timedelta(days=1)
d = datetime.date(2020,7,15)
result = d-td
print(result) #return 2020-07-14
#timedelta #时间变化量
td = datetime.timedelta(seconds=1)
d = datetime.date(2020,7,15)
result = d-td
print(result) #return 2020-07-15 减少了1秒 ,日期没有变化
td = datetime.timedelta(seconds=2)
t = datetime.time(18,14,23)
result = t-td
print(result) #TypeError: unsupported operand type(s) for -: 'datetime.time' and 'datetime.timedelta'
#time类和 timedelta不能计算
td = datetime.timedelta(seconds=2)
dt = datetime.datetime(2020,7,15,18,18,59)
result = dt+td
print(result) #return 2020-07-15 18:19:01 分钟增加了1
dt = datetime.date(2019,3,1)
td = datetime.timedelta(days=1)
result = dt-td
print(result.day) #return 28 判断某一年的2月份是多少天
print(type(result)) #<class 'datetime.date'> 类型跟参与运算的一致
os 和操作系统相关模块
import os
os.remove('test')#删除文件
os.rename('test2','test4') #改名字,内容不变
os.removedirs('bb') #return 目录不是空的 不能删除
import shutil
shutil.rmtree('bb') #成功
result1 = os.path.dirname(r'E:/untitled1/day14.py') #返回文件路径
print(result1) #return E:/untitled1
result2 = os.path.basename(r'E:/untitled1/day14.py') #返回文件名
print(result2) #return day14.py
result3 = os.path.split(r'E:/untitled1/day14.py') #返回路径和文件名
print(result3)
path1 = os.path.join('d:/aa/bb/','test.txt')
print(path1) #return d:/aa/bb/test.txt
print(os.path.isabs('d:/aa.txt')) #return True 判断是不是绝对路径
print(os.path.isabs('aa.txt')) #return False
print(os.path.isdir('d:/aa.txt')) #return False 判断路径下有没有aa.txt 文件夹
print(os.path.isfile('d:/aa.txt')) #return False 判断路径下有没有aa.txt 文件
和解释器相关的操作sys
import sys
print(sys.argv[0]) #脚本名(模块名) 在命令行 用python + 文件名.py 访问
print(sys.argv[1]) #第一个参数 在命令行 用python +文件名.py + 参数
print(sys.argv[2]) #第二个参数
sys.path #解释器寻找模块路径
print(sys.modules) #获取加载的模块
json
- javascript object notation :java脚本兑现标记语言
- 简单数据交换格式
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write(10) #return TypeError: write() argument must be str, not int
#报错,只能写str 不能写int ,也不能写list 等
f.write([1,2,3,4]) #return TypeError: write() argument must be str, not list
import json
s=json.dumps([1,2,3,4])
print(s,type(s)) #return [1, 2, 3, 4] <class 'str'> 变成了字符串
import json
s=json.dumps([1,2,3,4])
print(s,type(s)) #return [1, 2, 3, 4] <class 'str'> 变成了字符串
s1 = json.dumps((1,2,3,4))
print(s1,type(s1)) #return [1, 2, 3, 4] <class 'str'> 元组被转化成列表
s2 = json.dumps(10)
print(s2,type(s2)) #10 <class 'str'>
s3 = json.dumps({'name':'tom','age':10})
print(s3,type(s3)) #{"name": "tom", "age": 10} <class 'str'>
with open('a.txt',mode='wt',encoding='utf-8') as f:
f.write(s3) #a.txt 文件中是{"name": "tom", "age": 10}
json.dump([1,2,3],f) #文件中增加一行 [1,2,3]
# set 集合不能序列化
s = json.dumps(set(1,2,3,4))
print(s,type(s)) #TypeError: set expected at most 1 argument, got 4 报错
#反序列化 loads
s = json.dumps([1,2,3])
lst = json.loads(s)
print(lst,type(lst)) #[1, 2, 3] <class 'list'>
#从文件中反序列化
with open('a.txt',encoding='utf-8',mode = 'r') as f:
s = json.load(f)
print(s,type(s)) #{'name': 'tom', 'age': 10} <class 'dict'>
- 序列化到内存中 dumps
- 序列化到文件中dump
- 从文件中反序列化 load
- 从内存中反序列化loads
- 四个功能都是一次性完成