python字典详解

字典

时间复杂度: O(1)

特点:key无重复的无序key,且必须是可以hash(list不可以,set不可以,dict不可以,tuple可以)

dict1 = {} 定义一个字典

dict1.fromkeys((1,2,3))
返回结果{1:None,2:None,3:None} # 注意是重新创建一个字典

dict1.fromkeys((1,2,3),(‘one’,‘two’,‘three’)) #这里并不会分别匹配
返回结果{1:(‘one’,‘two’,‘three’),2:(‘one’,‘two’,‘three’),3:(‘one’,‘two’,‘three’)}

dict1.fromkeys(range(5),‘赞’)
返回结果{0:‘赞’,1:‘赞’,2’赞’,3:‘赞’,4:‘赞’,}

dict1.keys()
返回结果0 1 2 3 4 不是list,需要list()转换

dict1.values()
返回结果 赞 赞 赞 赞 赞 不是list,需要list()转换

dict1.items()
返回结果 (0:‘赞’) (1:‘赞’) (2:‘赞’) (3:‘赞’) (4:‘赞’) 不是list,需要list()转换

dict1[5]会报错,
dict1.get(5)会返回None
dict1.get(5,‘Cat’)会返回Cat

dict1.clear() 清空字典
del dict[1] 删除key=1的元素
dict1.pop(1) 删除key=1的元素

len(dict1) 字典长度

a = {1:‘A’,2:‘B’} b = a
a = {} 此时b = {1;‘A’,2:‘B’} 虽然a和b指向同一地址,但是a重新指向了新的{}的地址,并没有改变a和b共同的地址,若执行a.update({3:“C”})则b={1:‘A’,2:‘B’,3:“C”}
但若是a.clear()则b也会被清空

dict1.copy()浅拷贝:原字典的修改不会影响新字典
dict2 = dict1深拷贝:原字典的修改会影响新字典

dict1.pop(4) 返回4对应的值,在dict1里也会删除4这对映射关系

dict1.popitem() 随机返回,并在字典里删除

dict1.setdefault(5,‘five’) 这对映射也是随机插入任意位置

a = {5:six} dict1.update(a) 此时字典中{0:‘赞’,1:‘赞’,2’赞’,3:‘赞’,4:‘赞’,5:‘six’}

dict1 = dict(zip([1, 2], [‘a’, ‘b’])) zip参数必须长度相同,对应key和value
输出结果:{1:‘a’, 2 : ‘b’}

通讯录系统
print('|--- 欢迎进入通讯录程序 ---|')
print('|--- 1:查询联系人资料  ---|')
print('|--- 2:插入新的联系人  ---|')
print('|--- 3:删除已有联系人  ---|')
print('|--- 4:退出通讯录程序  ---|')

contacts = dict()      #定义字典的方法

while 1:         #无限循环在输入时需要记住😄
    instr = int(input('\n请输入相关的指令代码:'))
    
    if instr == 1:
        name = input('请输入联系人姓名:')
        if name in contacts:
            print(name + ' : ' + contacts[name])
        else:
            print('您输入的姓名不再通讯录中!')

    if instr == 2:
        name = input('请输入联系人姓名:')
        if name in contacts:
            print('您输入的姓名在通讯录中已存在 -->> ', end='')
            print(name + ' : ' + contacts[name])
            if input('是否修改用户资料(YES/NO):') == 'YES':
                contacts[name] = input('请输入用户联系电话:')
        else:
            contacts[name] = input('请输入用户联系电话:')   #如果原字典中不存在就创建

    if instr == 3:
        name = input('请输入联系人姓名:')
        if name in contacts:
            del(contacts[name])      # 删除也可以使用dict.pop()   
        else:
            print('您输入的联系人不存在。')
            
    if instr == 4:
        break       #退出循环只需要break像是废话,但一定记住while和break搭配

print('|--- 感谢使用通讯录程序 ---|')

执行结果:
在这里插入图片描述

注册用户
user_data = {}
def new_user():
    prompt = '请输入用户名:'
    while True:
        name = input(prompt)
        if name in user_data:
            prompt = '此用户名已经被使用,请重新输入:'
            continue      #巧妙之处使用循环
        else:
            break

    passwd = input('请输入密码:')
    user_data[name] = passwd
   
    print('注册成功,赶紧试试登录吧^_^')
if __name__ == '__main__':
    new_user()

输出结果:

在这里插入图片描述

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值