day005|python基础回顾5

字典类型常用操作及内置方法

1、作用:存多个值,key-value存取,存取速度快

2、定义:在{}内用逗号分隔开多个key:value,key必须是不可变类型,通常是字符串类型,value可以是任意类型

info = {'name': 'egon', 'age': 18, 'gender': 'male'} # 本质info=dict({...})

key不能重复,重复只会显示最后一个赋的值

3、数据类型转换

​ info = dict(name='egon', age=18, gender='male')

​ info = dict([['name', 'egon'], ('gender', 18)])

​ res = {}.fromkeys(('name', 'age', 'gender'), None)

​ print(res)

l = {}

print(l, type(l)) # 空花括号是字典

# ========================优先掌握的常用操作+内置方法===========
# 1、按key存取值:可存可取
# d = {"k1": 111, "k2": 222, "k3": 333}
# d["k1"] = 666
# print(d)              # {'k1': 666, 'k2': 222, 'k3': 333}
# d["k4"] = 999
# print(d)              # {'k1': 111, 'k2': 222, 'k3': 333, 'k4': 999}

# 2、长度len
# d = {"k1": 111, "k2": 222, "k3": 333}
# print(len(d))         # 3

# 3、成员运算in和not in
# 字典依据key运算
# d = {"k1": 111, "k2": 222, "k3": 333}
# print('k1' in d)      #True
# print(111 in d)       # False

# 4、删除
# d = {"k1": 111, "k2": 222, "k3": 333}
# 方式一
# del d['k1']
# print(d)              # {'k2': 222, 'k3': 333}
# 方式二
# res = d.pop('k1')
# print(res)            # 111 有返回值(随机删)
# print(d)              # {'k2': 222, 'k3': 333}

# 5、键keys(),值values(),键值对items()
# d = {"k1": 111, "k2": 222, "k3": 333}
# 在python2中
# >>> d = {"k1": 111, "k2": 222, "k3": 333}
# >>> d.keys(),type(d.keys())
# (['k3', 'k2', 'k1'], <type 'list'>)
# >>> d.values(),type(d.values())
# ([333, 222, 111], <type 'list'>)
# >>> d.items(), type(d.items())
# ([('k3', 333), ('k2', 222), ('k1', 111)], <type 'list'>)

# 在python3中
# print(d.keys(), type(d.keys()))         # dict_keys(['k1', 'k2', 'k3']) <class 'dict_keys'>
# print(d.values(), type(d.values()))     # dict_values([111, 222, 333]) <class 'dict_values'>
# print(d.items(), type(d.items()))       # ('k2', 222), ('k3', 333)]) <class 'dict_items'>

# 6、循环
# 只取key
# for i in d.keys():
#     print(i)
# 只取value
# for i in d.values():
#     print(i)
# value与key对应
# 方法一
# for i in d:
#     print(i, d[i])
# 方法二
# for x, y in d.items():
#     print(x, y)

# ========================需要掌握的常用操作+内置方法===========
# d = {"k1": 111, "k2": 222, "k3": 333}
# dic = d.copy()
# print(dic)          # {'k1': 111, 'k2': 222, 'k3': 333}

# d.update({'k3': 4646, 'k4': 6666})
# print(d)            # {'k1': 111, 'k2': 222, 'k3': 4646, 'k4': 6666}

# res = d.popitem()   # 删除最后一个值,LIFO后进先出
# print(res)          # ('k3', 333)
# print(d)            # {'k1': 111, 'k2': 222}

# d = {"k2": 222, "k3": 333}
# if 'k1' not in d:
#     d['k1'] = 66666666666
# res = d.setdefault('k1', 6666666666)    # 两者都可以达成
# print(res)      # 66666666666 k1不存在的情况下添加
# print(d)        # {'k2': 222, 'k3': 333, 'k1': 66666666666}


# ==========================总结
# 可以存多个值
# 无序
# 可变
# d = {"k1": 1111}
# print(id(d))          # 1844777596544
# d['k1'] = 2222
# print(id(d))          # 1844777596544


# =======================练习1
# # 有如下值集合 [11,22,33,44,55,66,77,88,99,90]
# # 将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中
# # 即: {'k1': 大于66的所有值, 'k2': 小于66的所有值}
# nums = [11, 22, 33, 44, 55, 66, 77, 88, 99]
# d = {'k1': [], 'k2': []}
# for num in nums:
#     if num > 66:
#         d['k1'].append(num)
#     else:
#         d['k2'].append(num)
# print(d)                # {'k1': [77, 88, 99], 'k2': [11, 22, 33, 44, 55, 66]}

# =======================练习2
# 统计s='hello alex alex say hello sb sb'中每个单词的个数
# 结果如:{'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}
# s = 'hello alex alex say hello sb sb'
# words = s.split()
# d = {}
# for x in words:
#     if x not in d:
#         d[x] = 1
#     else:
#         d[x] += 1
# print(d)                # {'hello': 2, 'alex': 2, 'say': 1, 'sb': 2}

集合常用操作及内置方法

1、作用:去重,关系运算

2、回顾:可变类型是不可hash类型,不可变类型是可hash类型

3、定义方式:在{}内用逗号分隔开多个不可变类型

3.1 集合:可以包含多个元素,用逗号分割

3.2 原则:

​ Ⅰ 每个元素必须是不可变类型(可hash,可作为字典的key)

​ Ⅱ 集合内元素唯一

​ Ⅲ 集合内元素无序

​ 集合的目的不是将不同的值存放到一起

​ 不同的集合间用来做关系运算,无需纠结于集合中单个值

s = {111, 111, 3.3, "aaa", 3.3, (111, 222)} # s = set(...)

print(s) # {(111, 222), 3.3, 'aaa', 111}

4、数据类型转换

res = set("hello")

print(res, type(res)) # {'h', 'e', 'l', 'o'} <class 'set'>

# # ==========================练习1
# # 有如下列表,列表元素为不可hash类型,去重,得到新列表,
# # 且新列表一定要保持列表原来的顺序
# # l=[
# #     {'name':'egon','age':18,'sex':'male'},
# #     {'name':'alex','age':73,'sex':'male'},
# #     {'name':'egon','age':20,'sex':'female'},
# #     {'name':'egon','age':18,'sex':'male'},
# #     {'name':'egon','age':18,'sex':'male'},
# # ]
# l = [
#     {'name': 'egon', 'age': 18, 'sex': 'male'},
#     {'name': 'alex', 'age': 73, 'sex': 'male'},
#     {'name': 'tony', 'age': 20, 'sex': 'female'},
#     {'name': 'egon', 'age': 18, 'sex': 'male'},
#     {'name': 'egon', 'age': 18, 'sex': 'male'},
# ]
# res = []
# for item in l:
#     if item not in res:
#         res.append(item)
# print(res)
# # [{'name': 'egon', 'age': 18, 'sex': 'male'},
# # {'name': 'alex', 'age': 73, 'sex': 'male'},
# # {'name': 'tony', 'age': 20, 'sex': 'female'}]  # 同一行

# 优先掌握的操作:
# 1、长度len
# s = {111, 222, 333}
# print(len(s))           # 3

# 2、成员运算in和not in
# s = {111, 222, 333}
# print(111 in s)         # True
# print(11 not in s)      # True


# =====================关系运算
# pythons = {'alex', 'egon', 'yuanhao', 'wupeiqi', 'gangdan', 'biubiu'}
# linuxs = {'wupeiqi', 'oldboy', 'gangdan'}
# 3、|合集
# print(pythons | linuxs)               # 方法一
# print(pythons.union(linuxs))          # 方法二
# # {'yuanhao', 'egon', 'wupeiqi', 'gangdan', 'biubiu', 'oldboy', 'alex'}

# 4、&交集:共同部分
# print(pythons & linuxs)               # 方法一
# print(pythons.intersection(linuxs))   # 方法二
# # {'gangdan', 'wupeiqi'}
#
# # 将交集更新给pythons
# pythons = pythons & linuxs            # 方法一
# pythons.intersection_update(linuxs)   # 方法二
# print(pythons)
# # {'wupeiqi', 'gangdan'}

# 5、-差集
# # pythons有而linuxs没有
# print(pythons - linuxs)               # 方法一
# print(pythons.difference(linuxs))     # 方法二
# # {'alex', 'biubiu', 'yuanhao', 'egon'}
#
# # linuxs有而pythons没有
# print(linuxs - pythons)               # 方法一
# print(linuxs.difference(pythons))     # 方法二
# # {'oldboy'}

# 6、^对称差集:取出pythons有或linuxs有的
# res = pythons ^ linuxs                            # 方法一
# print(res)
# res = pythons.symmetric_difference(linuxs)        # 方法二
# print(res)
# res = (pythons - linuxs) | (linuxs - pythons)     # 繁琐
# print(res)
# res = (pythons | linuxs) - (pythons & linuxs)     # 繁琐
# print(res)
# # {'alex', 'yuanhao', 'biubiu', 'egon', 'oldboy'}


# 7、==
# s1 = {1, 2, 3}
# s2 = {3, 2, 1}
# print(s1 == s2)         # True

# 8、父集:>,>=
# 9、子集:<,<=
# s1 = {1, 2, 3, 4, 5}
# s2 = {3, 2, 1}
# print(s1 >= s2)              # True
# print(s1 <= s2)              # False


# ====================需要了解的
# .update 更新
# s = {"aaa", 22, 3.3, "bbb"}
# s.update({22, 3, 4, 5})
# print(s)                    # {3.3, 3, 4, 5, 'aaa', 'bbb', 22}

# .pop 随机删
# s = {"aaa", 22, 3.3, "bbb"}
# res = s.pop()
# print(res)                  # 3.3 有输出结果,随机删
# print(s)                    # {'bbb', 'aaa', 22}

# .remove 具体删掉某一个值
# s = {"aaa", 22, 3.3, "bbb"}
# res = s.remove("bbb")
# print(res)                  # None 没有输出结果
# print(s)                    # {'aaa', 3.3, 22}

# .discard 删不存在的值会报错,remove不会
# s = {"aaa", 22, 3.3, "bbb"}
# s.discard("ccc")            # 没有该值会直接报错
# print(s)
# s.remove("ccc")             # 没有该值不会报错,返回原值
# print(s)                    # {'aaa', 3.3, 22, 'bbb'}

# .add 添加值,位置随机,因为集合无序
# s = {"aaa", 22, 3.3, "bbb"}
# s.add("ccc")
# print(s)                    # {3.3, 'aaa', 'ccc', 22, 'bbb'}

# isdisjoint 判断两个集合是否包含相同的元素
# s1 = {1, 2, 3}
# s2 = {4, 5, 6, 3}
# print(s1.isdisjoint(s2))    # False


# =========================总结
# 存多个值
# 无序
# 可变
# s = {1, 2, 3}
# print(id(s))                # 2189058917984
# s.add(4)
# print(id(s))                # 2189058917984

文件处理基础

"""
1、什么是文件?
    文件是操作系统提供给用户/应用程序存取硬盘的一种机制
2、为何要用文件?
    永久保存数据
3、如何用文件?
    应用程序   open()
    操作系统   文件
    计算机硬件(硬盘)
"""
# 1、操作文件的步骤
# rawstring原生路径
f = open(r'绝对路径或相对路径')
# f的值,文件对象/文件句柄

data = f.read()
print(data)

f.close()       # 回收系统资源

# 2、with上下文管理
with open(r'绝对路径或相对路径') as f1,\
  open(r'绝对路径或相对路径') as f2:
    f1.read()
    f2.read()
posted @ 2020-11-23 22:08  drrug  阅读(104)  评论(0编辑  收藏  举报