字典表、元组和文件

本文介绍了Python基础学习的第三天内容,主要涵盖字典表(dict)、元组(tuple)和文件(file)的基础知识和操作。字典表是一种映射类型,通过键值对存储,支持各种操作如插入、检索和改变;元组与列表类似但不可变,支持下标访问;文件操作包括读写文件,并讨论了防止乱码和类型丢失的方法。此外,还对数据类型进行了汇总,包括序列、映射、集合、数字、可调用和其他类型。

Python基础学习笔记DAY3

1.字典表 dict

1.1 基本概念
(1)映射类型,通过键值对应存储索引
(2)与列表的区别:列表不能访问不存在的索引
(3)列表不能作为键,只能是不支持原位改变的类型作为键
(4)列表支持嵌套

emp = {'age':20,'name':{'firstname':'Jerry','lastname':'Lee'}}
emp['name']['firstname']  //取出

1.2 定义代码
(1)通过字面值定义

d={'ISBN':'223421','Title':'python入门','price':39.00}

(2)通过dict构造函数声明

emp = dict (name='Mike', age=20,job='dev') 

ps: 呈现的顺序不是输入顺序,乱序(根据键哈希以后产生的结果)

1.3 基本操作
(1)通过方括号下标索引来找

emp[0] 

(2)插入一个值

d['author']='Jerry'

(3)检索某一键值(防止抛异常)

d.get('price')
//or 用get设置默认值防止抛异常
d.get('price',0.0)

(4)求字典表长度

len (emp)

(5)字典表可以原位改变

d['Price']=99.00

(6)字典表的合并

dep = {'department':'技术部'}
emp.update(dep)

(7)弹出某一项

emp.pop('age')

(8)只关注键

dict.keys() //返回类型为视图

(9)只关注值

dict.values()
for k in emp.keys():
print(k) //返回类型为视图,可像列表一样遍历

(10)关注类型和值

emp.items()

(11)形式变换:

for k,v in emp.items():
    print('{}=>{}'.format(k,v))

(12)排序

//方法1:转化为列表后用排序函数
ks = list(d.keys())
ks.sort()
for k in ks:
    print(d.get(k))
//方法2:用sorted全局函数:
ks=d.keys()
for k in sorted(ks):
    print(k,d.get(k))

2.元组 tuple

2.1 基本概念
(1)与列表类似,但不支持原位改变,圆括号声明。
(2)是任意对象的有序集合,通过下标访问,属“不可变”类型,长度固定,任意类型,任意嵌套
2.2 定义代码

//方法1:1,2
(1,2)+(3,4)
//方法2:
1,2
//单个元素声明元组(逗号用来标识类型)
x=(40,)
x=40,

2.3 基本操作
(1)求长度

len(x)

(2)元组的推导

//对元组中的数值求平方
//方法1:
for x in t:
    print(x**2)
//方法2(放入列表中):
res = []
for x in t:
    res.append(x**2)
//方法3:推导
res = [x**2 for x in t]

(3)检索元素位置

t.index(3)

(4)统计元素次数

t.count(3)

(5)namedtuple类

from collections import namedtuple
Employee = namedtuple ('Employee', ['name','age','department','salary'])
Jerry= Emloyee('Jerry',age=30,department='财务部',salary=9000.0)
Jerry.name

3.文件 file

3.1 基本操作
(1)写文件

myfile=open('hello.txt','w')
myfile.write('优品课堂\n')
myfile.close()
//mode: r(读) w(写)a(追加)  b(二进制文件)+(读+写)

(2)读取文件

f=open('hello.txt','r')  //'r'可省略,rb为读取二进制文件
f.read() //读取所有内容
//read相当于指针

(3)读取单行

f = open('hello.txt')  //重新打开
f.readline()
f.readline()

(4)读取后放入列表:

l = open ('hello.txt').readlines()  //类型为列表
for line in l
    print(line)

(5)中文文件内容时为了防止乱码可指定编码:

f = open ('course.txt','w',encoding='utf8')

(6)解决类型丢失问题

//无法保存数据类型的情况
x,y,z=1,2,3
l=[1,2,3]
f=open('datafile.txt','w')
f.write('{},{},{}'.format(x,y,z))
f.write(str(l))
f.close()
//or
chars = open('datafile.txt').read()

序列化–pickle存取python对象

//可保存数据类型的情况--序列化--pickle存取python对象
d ={'a':1,'b':2}
f  = open('datafile.pkl','wb')
import pickle
pickle.dump(d,f)
f.close()

打开方式
–1 用记事本打开乱码
–2 用open(‘datafile.pkl’,‘rb’).read() 打开时读取无意义
–3 有效打开方式

//可保存数据类型的情况--序列化--pickle存取python对象
f = open ('datafile.pkl','rb')
data=pickle.load(f)
data['a']
data.get('b')

(7)防止忘记关闭文件的做法

//传统方法,需要close()
f=open('course.txt')
l=f.readlines()
for line in l 
    print(line)
close()
//新方法 
with open('course.txt') as f
    for line in f.readlines()
    print(line)

4.数据类型汇总

4.1 集合
(1)序列 可变(列表list)/不可变(字符串string,元组tuple,字节数组)
(2)映射 字典表dict
(3)集合 set:集合信息不能有重复,花括号,但没有键
4.2 数字
(1)整型 int/boolean
(2)浮点型 float/decimal/fraction
4.3 可调用
(1)函数 function
(2)生成器 Generation
(3)类 Class
(4)方法
4.4 其他
(1)模块
(2)实例
(3)文件
(4)None
(5)视图
4.5 内部
(1)type

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值