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
  • 四个功能都是一次性完成
posted on 2020-07-15 20:48  94小渣渣  阅读(133)  评论(0编辑  收藏  举报