Python基础知识学习-第三天

06-字典表dict 与元组 tuple

1 字典.get()方法
字典(Dictionary) get() 函数返回指定键的值,如果值不在字典中返回默认值。
get()方法语法:
dict.get(key, default=None)
参数:
key – 字典中要查找的键。
default – 如果指定键的值不存在时,返回该默认值。
返回值:
返回指定键的值,如果值不在字典中返回默认值None。
实例:

dict = {'name':'zara', 'age':27}
print(dict.get('name'))
zara
print(dict.get('job', 'none'))
none

2.申明字典,即可以用花括号来申明,也可以用dict()构造函数来申明。

emp = {'name':'mike', 'job':'dev'}
emp
{'name':'mike', 'job':'dev'}
emp = dict(name = 'mike', job = 'dev')
print(emp)
{'name':'mike', 'job':'dev'}

3 字典.update()方法
字典(Dictionary) update() 函数把字典dict2的键/值对更新到dict里。
update()方法语法:
dict.update(dict2)
参数:
dict2 – 添加到指定字典dict里的字典。
返回值:
该方法没有任何返回值。
实例:

dict1 = {'name':'mike', 'job':'dev'}
dict2 = {'age':20}
dict1.update(dict2)
print(dict1)
{'name': 'mike', 'job': 'dev', 'age': 20}

有相同的键会直接替换成 update 的值:

dict1 = {'name':'mike', 'job':'dev'}
dict2 = {'age':20, 'name':'zara'}
dict1.update(dict2)
print(dict1)
{'name': 'zara', 'job': 'dev', 'age': 20}

4 字典.pop()方法
字典 pop() 方法删除字典给定键 key 及对应的值,返回值为被删除的值。key 值必须给出。 否则,返回 default 值。
pop()方法语法:
pop(key[,default])
参数:
key: 要删除的键值
default: 如果没有 key,返回 default 值
返回值:
返回被删除的值。
实例:

site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
pop_object = site.pop('name')
print(pop_object)

5 字典.keys()方法
字典(Dictionary) keys() 函数返回一个字典所有的键。
keys()方法语法:
dict.keys()
参数:
NA。
返回值:
返回一个字典所有的键。
实例:

site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
print(site.keys())
>>>dict_keys(['name', 'alexa', 'url'])

6 字典values()方法
字典 values() 方法返回一个迭代器,可以使用 list() 来转换为列表,列表为字典中的所有值。
values()方法语法:
dict.values()
参数:
NA。
返回值:
返回迭代器。
实例:

site= {'name': '菜鸟教程', 'alexa': 10000, 'url': 'www.runoob.com'}
print(site.values())
print(list(site.values()))
>>>dict_values(['菜鸟教程', 10000, 'www.runoob.com'])
>>>['菜鸟教程', 10000, 'www.runoob.com']

7 字典items()方法
字典(Dictionary) items() 函数以列表返回可遍历的(键, 值) 元组数组。
items()方法语法:
dict.items()
参数:
NA。
返回值:
返回可遍历的(键, 值) 元组数组。
实例:

dict = {'Google': 'www.google.com', 'Runoob': 'www.runoob.com', 'taobao': 'www.taobao.com'}
print('字典值为:', dict.items())
for keys, values in dict.items():
    print(keys, values)
>>>字典值为: dict_items([('Google', 'www.google.com'), ('Runoob', 'www.runoob.com'), ('taobao', 'www.taobao.com')])
>>>Google www.google.com
>>>Runoob www.runoob.com
>>>taobao www.taobao.com

items() 方法的遍历:items() 方法把字典中每对 key 和 value 组成一个元组,并把这些元组放在列表中返回。

d = {'one':1, 'two':2, 'three':3}
print(d.items())
>>>dict_items([('one', 1), ('two', 2), ('three', 3)])
print(type(d.items()))
>>><class 'dict_items'>

8字典支持嵌套

dict = {'name':{'first_name':'jerry', 'last_name':'lee'}, 'job':'dev', 'age':20}
print(dict)
>>>{'name': {'first_name': 'jerry', 'last_name': 'lee'}, 'job': 'dev', 'age': 20}
>print(dict.get('name'))
>>>{'first_name': 'jerry', 'last_name': 'lee'}
>print(dict['name']['last_name'])
>>>lee

9 元组可以相加

print((1, 2) + (3, 4))
>>>(1, 2, 3, 4)

10 交换变量

x = 5
y = 10
x, y = y, x
print('x = {}, y = {}'.format(x, y))
>>>x = 10, y = 5

07-文件与类型汇总

1 open()函数
open() 函数用于打开一个文件,创建一个 file 对象,相关的方法才可以调用它进行读写。
函数语法:
open(name[, mode[, buffering]])
参数说明:
name : 一个包含了你要访问的文件名称的字符串值。
mode : mode 决定了打开文件的模式:只读,写入,追加等。所有可取值见如下的完全列表。这个参数是非强制的,默认文件访问模式为只读®。
buffering : 如果 buffering 的值被设为 0,就不会有寄存。如果 buffering 的值取 1,访问文件时会寄存行。如果将 buffering 的值设为大于 1 的整数,表明了这就是的寄存区的缓冲大小。如果取负值,寄存区的缓冲大小则为系统默认。

模式 描述
r 以只读方式打开文件。文件的指针将会放在文件的开头。这是默认模式。
rb 以二进制格式打开一个文件用于只读。文件指针将会放在文件的开头。这是默认模式。
r+ 打开一个文件用于读写。文件指针将会放在文件的开头。
rb+ 以二进制格式打开一个文件用于读写。文件指针将会放在文件的开头。
w 打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb 以二进制格式打开一个文件只用于写入。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
w+ 打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
wb+ 以二进制格式打开一个文件用于读写。如果该文件已存在则打开文件,并从开头开始编辑,即原有内容会被删除。如果该文件不存在,创建新文件。
a 打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
ab 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。也就是说,新的内容将会被写入到已有内容之后。如果该文件不存在,创建新文件进行写入。
a+ 打开一个文件用于读写。如果该文件已存在,文件指针将会放在文件的结尾。文件打开时会是追加模式。如果该文件不存在,创建新文件用于读写。
ab+ 以二进制格式打开一个文件用于追加。如果该文件已存在,文件指针将会放在文件的结尾。如果该文件不存在,创建新文件用于读写。

file 对象方法
file.read([size]):size 未指定则返回整个文件,如果文件大小 >2 倍内存则有问题,f.read()读到文件尾时返回""(空字串)。

f = open('hello.txt', 'w')
f.write('hello, world!\n')
f.write('wow!\n')
f.close()
f = open('hello.txt', 'r')
print(f.read())
f.close()
>>>hello, world!
>>>wow!

file.readline():返回一行。

f = open('hello.txt', 'r')
print(f.readline())
>>>hello, world!

file.readlines([size]) :返回包含size行的列表, size 未指定则返回全部行。

f = open('hello.txt', 'r')
print(f.readlines())
>>>['hello, world!\n', 'wow!\n']

for line in f: print line :通过迭代器访问。

f = open('hello.txt', 'r')
for line in f:
    print(line)
>>>hello, world!

>>>wow!

f.write(“hello\n”):如果要写入字符串以外的数据,先将他转换为字符串。
f.tell():返回一个整数,表示当前文件指针的位置(就是到文件头的比特数)。

f = open('hello.txt', 'r')
print(f.tell())
>>>0

f.seek(偏移量,[起始位置]):用来移动文件指针。
偏移量: 单位为比特,可正可负
起始位置: 0 - 文件头, 默认值; 1 - 当前位置; 2 - 文件尾

f = open('hello.txt', 'r')
f.seek(3)
print(f.tell())
>>>3

f.close() 关闭文件
更多内容参考:Python File(文件) 方法
2 有时在创建的文件里输入中文会显示出乱码,解决方法:

f = open('hello.txt', 'w', encoding = 'utf8')
f.write('hello, world!\n')
f.write('wow!\n')
f.write('你好!\n')
f.close()
f = open('hello.txt', 'r', encoding = 'utf8')
print(f.read())
f.close()

3 pickle模块
pickle可以存储什么类型的数据呢?
所有python支持的原生类型:布尔值,整数,浮点数,复数,字符串,字节,None。
由任何原生类型组成的列表,元组,字典和集合。
函数,类,类的实例
pickle模块中常用的方法有:

  1. pickle.dump(obj, file, protocol=None,)
    必填参数obj表示将要封装的对象
    必填参数file表示obj要写入的文件对象,file必须以二进制可写模式打开,即“wb”
    可选参数protocol表示告知pickler使用的协议,支持的协议有0,1,2,3,默认的协议是添加在Python 3中的协议3。
  2. pickle.load(file,*,fix_imports=True, encoding=“ASCII”, errors=“strict”)
    必填参数file必须以二进制可读模式打开,即“rb”,其他都为可选参数
  3. pickle.dumps(obj):以字节对象形式返回封装的对象,不需要写入文件中
  4. pickle.loads(bytes_object): 从字节对象中读取被封装的对象,并返回
1 # dumps功能
2 import pickle
3 data = ['aa', 'bb', 'cc']  
4 # dumps 将数据通过特殊的形式转换为只有python语言认识的字符串
5 p_str = pickle.dumps(data)
6 print(p_str)            
7 b'\x80\x03]q\x00(X\x02\x00\x00\x00aaq\x01X\x02\x00\x00\x00bbq\x02X\x02\x00\x00\x00ccq\x03e.
1 # loads功能
2 # loads  将pickle数据转换为python的数据结构
3 mes = pickle.loads(p_str)
4 print(mes)
5 ['aa', 'bb', 'cc']
1 # dump功能
2 # dump 将数据通过特殊的形式转换为只有python语言认识的字符串,并写入文件
3 with open('D:/tmp.pk', 'wb') as f:
4     pickle.dump(data, f)
1 # load功能
2 # load 从数据文件中读取数据,并转换为python的数据结构
3 with open('D:/tmp.pk', 'rb') as f:
4     data = pickle.load(f)
发布了7 篇原创文章 · 获赞 0 · 访问量 97

猜你喜欢

转载自blog.csdn.net/Mr_Wang0120/article/details/103892751