Python容器-3·字典
2022-12-31 本文已影响0人
技术老男孩
一、字典的定义 dict:
-
dictionary(字典) 是 除列表以外Python之中 最灵活的数据类型 - 字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体 的相关信息
- 和列表的区别 :
- 列表 是 有序 的对象集合
- 字典 是 无序 的对象集合
- 字典用 {} 定义
- 字典使用 键值对 存储数据,键值对之间使用
,分隔- 键
key是索引 - 值
value是数据 - 键 和 值 之间使用
:分隔 - 键必须是唯一的
- 值 可以取任何数据类型,但 键 只能使用 字符串、数字或 元组
- 键
二、常用方法(功能:增删改查)
| 序号 | 分类 | 关键字 / 函数 / 方法 | 说明 |
|---|---|---|---|
| 1 | 查询 | 字典[key] | 查询key对应的vlaue,key不存在报错 |
| 字典.get(key) | 查询key对应的vlaue,key不存在,默认值=None | ||
| 字典.get(key,default) | 查询key对应的vlaue,key不存在,默认值=default的值 | ||
| 字典.keys() | 返回字典中所有的key(list类型) | ||
| 字典.values() | 返回字典中所有的value(list类型) | ||
| 字典.items() | 返回字典中所有的键值对(list类型) | ||
| 2 | 添加/修改 | 字典[key]=value | key在原字典存在,则是修改,否则是添加操作 |
| 字典.update(新字典) | 新字典key存在是修改,否则是添加操作 | ||
| 3 | 删除 | 字典.pop(key) | 通过key删除键值对,并返回被删除key对应的value |
| 字典.clear() | 清空字典 | ||
| del 字典[key] | 常规删除数据手段,不属于字典 | ||
| 4 | 统计 | len(字典) | 统计字典的长度 |
三、字典相关函数:
- hash():不是为字典设计,可以判断对象是否可以作为字典的键
- hash() 可以判断对象是否可以作为字典的键:
四、练习:模拟用户登录信息系统
需求
- 支持新用户注册(添加),新用户名和密码注册到字典中
- 支持老用户登陆(查询),用户名和密码正确提示登陆成功
- 主程序通过循环询问,进行何种操作,根据用户的选择,执行注册或是登陆操作
# 数据源
user = {"zs": "123", "ls": "213"}
# 注册函数
def register():
# 1.从键盘输入用户名
# 2. 判断该用户是否可用
# 2.1 如果被注册:提示用户对应信息
# 2.2 如果没有注册:输入密码
# 3. 将用户名密码添加到字典当中
username = input("请输入用户名:\n")
if username not in user.keys():
password = input("请输入密码:\n")
user[username] = password
print("注册成功!")
else:
print(f"注册失败!用户名{ username}已存在...")
# 登录函数
def login():
username = input("请输入用户名:\n")
password = input("请输入密码:\n")
if (username, password) in user.items():
print("登录成功")
print(user.get(username))
else:
print("登录失败")
# 显示选择方式行数
def show_menu():
while True:
xz = input("0.注册 1.登录 2.退出 请选择(0/1/2) :\n")
if xz not in ["0", "1", "2"]:
print("无效输入,请重新输入!")
continue
elif xz == "0":
register()
elif xz == "1":
login()
else:
break
# 初始化入口
if __name__ == '__main__':
show_menu()