Python-字典详解(附案例实战)

文章介绍了Python中的字典数据类型,包括其定义、访问方式以及常用函数。通过示例展示了如何创建和操作字典,以及如何用字典实现简单的用户注册和登录系统。
摘要由CSDN通过智能技术生成

Python中的特征数据类型(3)-----字典

字典:

_与列表相似,字典使用的是{ },列表使用的是[ ].但不同的是,列表的索引是从0开始的有序整数,并且不能重复;而字典的索引叫做,虽然字典中的键与列表中的索引都是不可重复的,但是键是属于元素的,不像列表的索引是属于整个列表的。字典中元素的任意排列都不影响字典的使用。

字典的定义:

字典的键,可以是数字、字符串、列表,元组等等。但通常用字符串来表示,健和值之间用冒号(:)来隔开。 注意:字典中的键必须是唯一且不变的,但值是可任意改变的

例如:

dict = {'姓名':'Amy','年龄':18,'学校':'新华中学'}#定义一个字典


访问字典中的键和值:

_访问字典中的值可以用键(索引)来访问, 也可以使用values()方法来访问;

可以使用keys()方法来访问字典中的键;利用 items()方法同时访问键和值,还可以利用for循环来遍历字典中的键和值

举个栗子:

dict = {'姓名': 'Amy', '年龄': 18, '学校': '新华中学'}  # 定义一个字典
#访问字典中的值
print("姓名:", dict['姓名'])
print("字典中所有的值:", (dict.values()))
# 访问字典中的键
print("字典中的所有键:",dict.keys())
#利用items()方法同时访问字典中的键和值
print("字典中的键和值:",dict.items())
#还可以利用for循环来遍历字典中的键和值
for i,j in dict.items():
    print(i,':',j)


#运行结果
姓名: Amy
字典中所有的值: dict_values(['Amy', 18, '新华中学'])
字典中的所有键: dict_keys(['姓名', '年龄', '学校'])
字典中的键和值: dict_items([('姓名', 'Amy'), ('年龄', 18), ('学校', '新华中学')])
姓名 : Amy
年龄 : 18
学校 : 新华中学

进程已结束,退出代码0


字典中的函数:
字典的函数名意 义
len(dict)字典中的元素个数,即键的个数
str(dict)以字符串的形式输出字典
type(dict)输入返回参数的类型
print("用字符串表示字典中的数据:",str(dict))
print("字典中的键的个数:",len(dict))
print("返回字典的类型:",type(dict))





#运行结果
用字符串表示字典中的数据: {'姓名': 'Amy', '年龄': 18, '学校': '新华中学'}
字典中的键的个数: 3
返回字典的类型: <class 'dict'>

进程已结束,退出代码0

案例实战:

用户注册系统与登录系统
users = {'num1':{'name': 'Bob', 'password': '12345', 'sex': '男'},
         'num2': {'name': '赵辉', 'password': '8989', 'sex': '男'}}#字典的初始值,可存于数据库中
lists = []
#可用两个嵌套for循环来获取users字典中的值
for num, info in users.items():
    for keys,values in info.items():
        lists.append(values)
print("用户注册之前信息:", users)
print('用户的创建'.center(49, "#"))
print('注册'.center(49, '#'))
name = input("请输入您注册的用户名:")
if not name in lists:
    password = input('请输入注册密码:')
    sex = input('请输入性别:(男/女)')
    i = 'num' + str(len(users)+1)
    users[i] = {"name": name, "password": password, 'sex': sex}
    print('注册成功!')
    print('注册成功后的用户信息:\n',users)

else:
    print("注册失败,该用户名已存在。")
#登陆系统
list1 =[]
list2 = []
for key1, value1 in users.items():
    list1.append(value1['name'])#存留用户姓名
    list2.append(value1['password'])#存留用户密码
print('用户登录系统'.center(50,'#'))
timeout = 0
timeout2=0
name = input('请输入用户的姓名')
while timeout < 3:
    if not name in list1:
        if timeout == 2:
            print("登录次数已满,登陆失败!")
            break
        print('该用户不存在,请重新输入。')
        timeout += 1
        print("您还有%d次机会(共有三次机会)" %(3-timeout),'\n')
        name = input("请输入你的姓名:")

    else:
        password = input("请输入你的密码:")
        if (name == list1[0] and password == list2[0]) or (name == list1[1] and password == list2[1]):
            print("登录成功!")
            break
        else:
            if timeout2 == 2:
                print("登陆失败!")
                break
            print("密码错误,请重输。")
            timeout2 +=1
            print("您还有%d次机会(共有三次机会)" % (3 - timeout2), '\n')

#运行结果:
用户注册之前信息: {'num1': {'name': 'Bob', 'password': '12345', 'sex': '男'}, 'num2': {'name': '赵辉', 'password': '8989', 'sex': '男'}}
######################用户的创建######################
########################注册#######################
请输入您注册的用户名:youxin
请输入注册密码:223
请输入性别:(男/女)男
注册成功!
注册成功后的用户信息:
 {'num1': {'name': 'Bob', 'password': '12345', 'sex': '男'}, 'num2': {'name': '赵辉', 'password': '8989', 'sex': '男'}, 'num3': {'name': 'youxin', 'password': '223', 'sex': '男'}}
######################用户登录系统######################
请输入用户的姓名sdj
该用户不存在,请重新输入。
您还有2次机会(共有三次机会) 

请输入你的姓名:qwdwe
该用户不存在,请重新输入。
您还有1次机会(共有三次机会) 

请输入你的姓名:Bob
请输入你的密码:dwed
密码错误,请重输。
您还有2次机会(共有三次机会) 

请输入你的密码:ax
密码错误,请重输。
您还有1次机会(共有三次机会) 

请输入你的密码:12345
登录成功!

进程已结束,退出代码0



总结不易
各位大佬,
你们的每一个点赞是对博主创作的肯定;
你们的每一次转发是对博主创作的支持
你们的每一次收藏是博主的莫大的荣幸
你们的每一次评论是对博主最好的理解
谢谢!

  • 3
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

由心同学

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值