day03 数据类型和函数¶
今日概要:
- 数据类型
- 函数
1.字典类型(dict)¶
1.1 定义¶
data = ["123","fff",123,88,19]
info = { "name":"123", "pwd":"fff", "age":123, 'size':88, 'heigth':19}
info["name"]
特点:
- 动态
- 容器
- 有序 & 无序
- 值:任意类型;键:可哈希(列表不可哈希、字典、集合都不可以)。
- 查找速度快。
1.2 独有功能¶
- 获取值
info = {"name":"陈聪","age":18,"size":3}
v1 = info.get("name")
print(v1) # "陈聪"
v2 = info.get("email")
print(v2) # None
v3 = info.get("email","123123")
print(v3) # None
v4 = info["name"] # "陈聪"
v5 = info["email"]
- 获取所有的键
info = {"name":"陈聪","age":18,"size":3}
info.keys() # ["name","age","size"]
for item in info.keys():
print(item)
- 获取所有的值
info = {"name":"陈聪","age":18,"size":3}
info.values() # ["陈聪",18,3]
for item in info.values():
print(item)
- 获取所有的键值对
info = {"name":"陈聪","age":18,"size":3}
info.items() # [ ("name","陈聪"), ("age",18), ("size",3)]
for k,v in info.items():
# item
1.3 公共¶
- 长度
- 索引
info = {"name":"陈聪","age":18,"size":3}
info["name"]
info["age"]
info["size"]
info['name'] = "魏志彪"
info['email'] = "xxx@live.com"
del info['name']
-
切片(不支持)
-
for循环
-
in是否存在
if "xx" in "xxxxfaj;lskdjf;kajsd":
pass
if 11 in [11,22,33,44]:
pass
if "xx" in ("xx",11,22,33):
pass
# 键中是否存在xx
info = {"name":"陈聪","age":18,"size":3}
if 'xx' in info:
pass
1.4 嵌套¶
info = {
"k1":123,
"k2":True,
"k3":[1,22,33],
"k4":{1:123,2:999},
"k5":(11,22),
"k6":[11,22,33,(111,22), {"k1":123} ]
}
info["k6"][-1]['k1']
案例¶
user_dict = {
"wupeiqi":"123",
"chencong":"666"
}
user = input("用户名:")
pwd = input("密码:")
db_pwd = user_dict.get(user)
if db_pwd == None:
print("用户名不存在")
else:
if db_pwd != pwd:
print("密码错误")
else:
print("成功")
user_list = [
{"id":1,"name":"董国鹏","age":24},
{"id":2,"name":"欧阳","age":44},
{"id":3,"name":"车聪","age":24},
]
while True:
uid = input(">>")
name = input(">>")
age = input(">>")
item = {}
item["id"] = uid
item["name"] = name
item["age"] = age
user_list.append(item)
user_list = [
{"id":1,"name":"董国鹏","age":24},
{"id":2,"name":"欧阳","age":44},
{"id":3,"name":"车聪","age":24},
]
while True:
uid = input(">>")
name = input(">>")
age = input(">>")
item = {"id":uid,"name":name,"age":age}
user_list.append(item)
data_string = """id,name,age
1,欧阳,44
2,陈聪,23
3,懂欧朋,24
"""
data_list = data_string.strip().split('\n')
# ['id,name,age', '1,欧阳,44', '2,陈聪,23', '3,懂欧朋,24']
# print(data_list)
# ['id', 'name', 'age']
header_list = data_list[0].split(",")
print(header_list)
result = []
# 循环数据
for row_string in data_list[1:]:
row_list = row_string.split(',')
# row_dict = {header_list[0]: row_list[0], header_list[1]: row_list[1], header_list[2]: row_list[2]}
row_dict = {}
for i in range(len(header_list)):
row_dict[header_list[i]] = row_list[i]
result.append(row_dict)
print(result)
# info={"k1":[123,123]}
info = {}
for i in range(3):
if "k1" in info:
info['k1'].append(123)
else:
info['k1'] = []
data_list = [1,22,33,44,55,66,77,88]
info = {
"k1":[],
"k2":[]
}
# 循环data_list中的每个数据,如果小于等于50,则追加到k1对应的列表中;大于50,追加到k2对应的列表中。
for item in data_list:
if item <= 50:
info['k1'].append(item)
else:
info['k2'].append(item)
data_list = [1,22,33,44,55,66,77,88]
info = {}
# 循环data_list中的每个数据,如果小于等于50,则追加到k1对应的列表中;大于50,追加到k2对应的列表中。
for item in data_list:
if item <= 50:
if "k1" in info:
info['k1'].append(item)
else:
info['k1'] = [item,]
else:
if "k2" in info:
info['k2'].append(item)
else:
info['k2'] = [item,]
db = [
['王*龙', '北京市 海淀区', '苏州街大恒科技大厦南座4层'],
['庞*飞', '北京市 昌平区', '汇德商厦四楼403'],
['顾*锐', '江苏省 扬州市', '三垛镇工业集中区扬州市立华畜禽有限公司'],
['王*飞', '上海市 徐汇区', '上海市徐汇区H88越虹广场B座5E'],
['华*升', '北京市 海淀区', '杰睿大厦'],
['朱*锴', '上海市 浦东新区', '川沙新镇华川家园33号楼503'],
]
result = {
# "北京": ['王*龙', ]
}
for item in db:
name, address, _ = item
city = address.split(' ')[0]
if city in result:
result[city].append(name)
else:
result[city] = [name, ]
print(result)
2.集合(set)¶
集合,无序、可变、元素必须可哈希、没有重复数据的 容器。
2.1 定义¶
v1 = [11,22,33] # [] list()
v2 = (11,22,33) # () tuple()
v3 = { "k1":123, "k2":123 } # {} dict()
v4 = { 11,222,333,44} # set()
2.2 独有功能¶
- 添加
- 删除
- 交集
v1 = {11, 22, 33}
v2 = {33, 44, 55}
res = v1.intersection(v2)
print(res)
result = v1 & v2
print(result)
- 并集
- 差集
v1 = {11, 22, 33}
v2 = {33, 44, 55}
# res1 = v1 - v2
res1 = v1.difference(v2) # v1有且v2没有的数据
print(res1)
# res2 = v2 - v1
res2 = v2.difference(v1) # v2有且v1没有的数据
print(res2)
2.3 公共¶
- 长度
-
索引,不支持
-
切片,不支持
-
循环
- 包含
集合,不可哈希;元素可哈希。
总结¶
- 是否可变
- 可哈希
- 转换布尔值为False
- 元组
-
字典的键 & 集合 -> 可哈希。
-
转换
str/int/list/tuple/dict/set
- 字符串和整型
int("xx")
str(123123)
- list/tuple/set
v1 = [11,22,33] # [] list()
v2 = (11,22,33) # () tuple()
v4 = { 11,222,333,44} # set()
data = set([111,222,333,111])
3.内存/赋值 相关¶
data_list = [
[10,22,34,[] ],
[20,22,34,[]],
[30,22,34,[]],
]
data_list[0][-1].append( data_list[1] )
data_list[1].append(999)
info = {
1:[11,22,33,44],
2:[33,422],
3:[99,88]
}
for k,v in info.items():
v.append(666)
print(info)
data_list = [
]
info = {
1: [11, 22, 33, 44],
2: [33, 422],
3: [99, 88]
}
for item in info.values():
data_list.append(item)
info[1].append(666)
案例¶
data_list = [
{"id": 1, "name": "董国鹏", "text": "这个位置真不用错", 'children': []},
{"id": 2, "name": "陈聪", "text": "我觉得还行把", 'children': []},
{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'children': []},
]
result = {}
for item in data_list:
user_id = item["id"]
result[user_id] = item
result[1]['children'].append(999)
print(data_list)
result = {
1:{"id":1,"name":"董国鹏","text":"这个位置真不用错", 'children':[] },
2:{"id":2,"name":"陈聪","text":"我觉得还行把", 'children':[] },
3:{"id":3,"name":"魏志彪","text":"我特么懵逼了", 'children':[] },
}
data_list = [
{"id": 1, "name": "董国鹏", "text": "这个位置真不用错", 'children': []},
{"id": 2, "name": "陈聪", "text": "我觉得还行把", 'children': []},
{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'children': []},
]
result = {}
for item in data_list:
user_id = item["id"]
result[user_id] = {"name": item['name'], "text": item['text'], 'id': item['id'], "children": item['children']}
result[1]['name'] = '123123'
print(data_list)
result = {
1:{"id":1,"name":"董国鹏","text":"这个位置真不用错", 'children':[] },
2:{"id":2,"name":"陈聪","text":"我觉得还行把", 'children':[] },
3:{"id":3,"name":"魏志彪","text":"我特么懵逼了", 'children':[] },
}
comment_list = [
{"id": 1, "name": "董国鹏", "text": "这个位置真不用错", 'reply': None}, # 地址
{"id": 2, "name": "陈聪", "text": "我觉得还行把", 'reply': None}, # 地址
{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'reply': 1},
{"id": 4, "name": "王卓", "text": "你真美", 'reply': 1},
{"id": 5, "name": "王卓", "text": "你真美", 'reply': 2},
{"id": 6, "name": "基友", "text": "xx", 'reply': 4},
{"id": 7, "name": "基友", "text": "fff", 'reply': 5},
{"id": 8, "name": "基友", "text": "sdf", 'reply': 3},
{"id": 9, "name": "基友", "text": "fff", 'reply': 1},
{"id": 10, "name": "基友", "text": "到处ss留情", 'reply': 2},
]
"""
result = [
{"id": 1, "name": "董国鹏", "text": "这个位置真不用错", 'reply': None,'child':[
{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'reply': 1,'child':[]},
{"id": 4, "name": "王卓", "text": "你真美", 'reply': 1,'child':[
{"id": 6, "name": "基友", "text": "xx", 'reply': 4,'child':[]},
]},
]}, # 地址
{"id": 2, "name": "陈聪", "text": "我觉得还行把", 'reply': None,'child':[]}, # 地址
]
"""
result = []
for item in comment_list:
if item['reply']:
continue
result.append(item)
"""
data_dict = {
1:{"id": 1, "name": "董国鹏", "text": "这个位置真不用错", 'reply': None,'child':[
{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'reply': 1,'child':[]},
{"id": 4, "name": "王卓", "text": "你真美", 'reply': 1,'child':[
{"id": 6, "name": "基友", "text": "xx", 'reply': 4,'child':[]},
]},
]}, # 地址
2:{"id": 2, "name": "陈聪", "text": "我觉得还行把", 'reply': None,'child':[
{"id": 5, "name": "王卓", "text": "你真美", 'reply': 2,'child':[]},
]}, # 地址
3:{"id": 3, "name": "魏志彪", "text": "我特么懵逼了", 'reply': 1,'child':[]},
4:{"id": 4, "name": "王卓", "text": "你真美", 'reply': 1,'child':[
{"id": 6, "name": "基友", "text": "xx", 'reply': 4,'child':[]},
]},
5:{"id": 5, "name": "王卓", "text": "你真美", 'reply': 2,'child':[]},
6:{"id": 6, "name": "基友", "text": "xx", 'reply': 4,'child':[]},
7:{"id": 7, "name": "基友", "text": "fff", 'reply': 5,'child':[]},
8:{"id": 8, "name": "基友", "text": "sdf", 'reply': 3,'child':[]},
9:{"id": 9, "name": "基友", "text": "fff", 'reply': 1,'child':[]},
10:{"id": 10, "name": "基友", "text": "到处ss留情", 'reply': 2,'child':[]},
}
"""
data_dict = {}
for item in comment_list:
cid = item['id']
item['child'] = []
data_dict[cid] = item
for item in data_dict.values():
reply = item['reply']
if not reply:
continue
data_dict[reply]['child'].append(item)
print(result)
import json
print(json.dumps(result, indent=2,ensure_ascii=False))
4.推导式¶
一行代码去生成数据。
- 列表推导式
data_list = [ "欧阳精心", "欧阳陈聪", "欧阳王卓", "董国鹏", "明宇","接电话"]
result = [ item for item in data_list if len(item) >3 ]
data_list = [ "欧阳精心",[11,22,33],11,2, "欧阳陈聪", 1, "欧阳王卓", "董国鹏", "明宇","接电话"]
result = [ item for item in data_list if type(item) == str or type(item) == int ]
data_list = ["欧阳精心", "欧阳陈聪", "欧阳王卓", "董国鹏", "明宇", "接电话"]
result = [item[-2:] for item in data_list]
print(result)
data_list = [
'5 编译器和解释器.mp4',
'9 Python解释器种类.mp4',
'21 课堂笔记的创建.mp4',
'82 Python介绍.mp4',
'70 编程语言的分类.mp4',
'3 常见计算机基本概念.mp4',
'1 今日概要.mp4',
'6 学习编程本质上的三件事.mp4',
'4 编程语言.mp4',
]
result = [ int(item.split(" ")[0]) for item in data_list]
print(result)
- 字典推导式
info = { i:123 for i in range(10)}
info = { i:123+100 for i in range(10)}
info = { i:123+100 for i in range(10) if i > 5}
data_list = [
'5 编译器和解释器.mp4',
'9 Python解释器种类.mp4',
'21 课堂笔记的创建.mp4',
'82 Python介绍.mp4',
'70 编程语言的分类.mp4',
'3 常见计算机基本概念.mp4',
'1 今日概要.mp4',
'6 学习编程本质上的三件事.mp4',
'4 编程语言.mp4',
]
result = { item.split(" ")[0]:item.split(" ")[1] for item in data_list}
data = "query=fff&_asf=www.sogou.com&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index"
result = {item.split('=')[0]: item.split('=')[1] for item in data.split("&")}
print(result)
params = {'query': 'fff', '_asf': 'www.sogou.com', 'w': '01019900', 'p': '40040100', 'ie': 'utf8',
'from': 'index-nologin', 's_from': 'index'}
# "query=fff&_asf=www.sogou.com&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index"
str_list = []
for k, v in params.items():
str_list.append(k)
str_list.append('=')
str_list.append(v)
str_list.append("&")
result = "".join(str_list)[:-1]
print(result)
params = {'query': 'fff', '_asf': 'www.sogou.com', 'w': '01019900', 'p': '40040100', 'ie': 'utf8',
'from': 'index-nologin', 's_from': 'index'}
# "query=fff&_asf=www.sogou.com&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index"
str_list = []
for k, v in params.items():
ele = k + "=" + v # query=fff
str_list.append(ele)
res = "&".join(str_list)
print(res)
params = {'query': 'fff', '_asf': 'www.sogou.com', 'w': '01019900', 'p': '40040100', 'ie': 'utf8',
'from': 'index-nologin', 's_from': 'index'}
# "query=fff&_asf=www.sogou.com&w=01019900&p=40040100&ie=utf8&from=index-nologin&s_from=index"
str_list = []
for k, v in params.items():
ele = "{}={}".format(k, v)
str_list.append(ele)
res = "&".join(str_list)
print(res)
params = {'query': 'fff', '_asf': 'www.sogou.com', 'w': '01019900', 'p': '40040100', 'ie': 'utf8',
'from': 'index-nologin', 's_from': 'index'}
res = "&".join(["{}={}".format(k, v) for k, v in params.items()])
print(res)
- 集合推导式
- 生成器
5.第一阶段考试题¶
- 入门
- 数据类型