Python3 的字典

1、dict() 字典

字典是python里唯一的映射类型

2、字典由key和value组成的项组成

如何创建一个字典:

>>> a = dict(one=1, two=2, three=3)
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c = dict(zip(['one', 'two', 'three'], [1, 2, 3]))
>>> d = dict([('two', 2), ('one', 1), ('three', 3)])
>>> e = dict({'three': 3, 'one': 1, 'two': 2})

3、字典的内置函数

keys

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> for i in b.keys():
    print(i)

    
one
two
three

 

values

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> for i in b.values():
    print(i)

    
1
2
3

 

items

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> for i in b.items()
>>> for i in b.items():
    print(i)

    
('one', 1)
('two', 2)
('three', 3)

 

copy

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c=b.copy()
>>> c
{'one': 1, 'two': 2, 'three': 3}
>>> b['one']=4
>>> b
{'one': 4, 'two': 2, 'three': 3}
>>> c
{'one': 1, 'two': 2, 'three': 3}

 

clear

{'one': 1, 'two': 2, 'three': 3}
>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> b.clear()
>>> b
{}

 

get

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> b.get('one')
1
>>> b.get(4)
>>> print(b.get(4))
None

 

fromkeys

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c=b.fromkeys("1",2)
>>> c
{'1': 2}

 

update

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c=b.fromkeys("1",2)
>>> c
{'1': 2}
>>> b.update(c)
>>> b
{'one': 1, 'two': 2, 'three': 3, '1': 2}

 

pop

>>> b = {'one': 1, 'two': 2, 'three': 3}
>>> c=b.fromkeys("1",2)
>>> c
{'1': 2}
>>> b.update(c)
>>> b
{'one': 1, 'two': 2, 'three': 3, '1': 2}
>>> b.pop('1')
2
>>> b
{'one': 1, 'two': 2, 'three': 3}

 

popitems

 

b = {'one': 1, 'two': 2, 'three': 3}
>>> b.popitem()
('three', 3)

 

 setdefault

'''Help on built-in function setdefault:

setdefault(key, default=None, /) method of builtins.dict instance
    Insert key with a value of default if key is not in the dictionary.
    
    Return the value for key if key is in the dictionary, else default.'''

>>> b={}
>>> b.setdefault('1',2)
2
>>> b
{'1': 2}
>>> b['1']=3
>>> b.setdefault('1',2)
3
>>> b
{'1': 3}

 

4、设计一个通讯录程序

print("|---欢迎进入通讯录程序---|\n|---1.查询联系人资料---|\
\n|---2.插入新的联系人---|\n|---3.删除已有联系人---|\\n|---4.打印所有用户信息---|\n|---5.退出通讯录程序---|")

mydict={}
while 1:
    fun=input("\n请输入相关指令代码:")
    if fun=='2':
        name=input("请输入联系人姓名:")#key
        if name in mydict:
            print("您输入的用户名已存在-->>",end='')
            print(name,':',mydict[name])
            yn=input("是否修改用户资料(YES/NO):")
            if yn == "YES":
                number=input("请输入用户电话号码:")#value
                mydict[name]=number
                continue
            else:
                continue    
        number=input("请输入用户电话号码:")#value
        mydict[name]=number
        print('录入成功!',name,':',mydict[name])
        continue
    elif fun=='1':
        name=input("请输入联系人姓名:")#key
        if name in mydict:
            print(name,':',mydict[name])
            continue
        else:
            print("你查找的用户不存在!")
            continue
    elif fun=='3':
        name=input("请输入联系人姓名:")#key
        if name in mydict:
            print('用户信息:',name,':',mydict[name])
            if mydict.pop(name,1)!=1:
                print('删除成功!')
                continue    
        else:
            print("你删除的用户不存在!")
            continue
    elif fun=='5':
        print("---感谢使用通讯录程序---")
        break
    elif fun=='4':
        for i in mydict:
            print(i,':',mydict[i],end='\n')
    else:
        print("请输入正确指令!!!")
        continue
'''            
Help on built-in function pop:

pop(...) method of builtins.dict instance
    D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
    If key is not found, d is returned if given, otherwise KeyError is raised        
'''    

5、设计一个用户登陆程序

版本1

user={}
flag=0
flag1=0
flag2=0
while 1:
    if flag2==1:
        print("欢迎进入XXOO系统,请点击右上角的X结束程序!")
        while 1:
            flag2==0
        
        
    print("\n|--- 新建用户:N/n ---|\
           \n|--- 登陆账号:E/e ---|\
           \n|--- 退出程序:Q/q ---|")
    fun=input("请输入指令代码:")
    while fun=='N'or fun=='n':
        if flag==1:
            name=input("此用户名已被使用,请重新输入:")
        else:
            name=input("请输入用户名:")
        if name not in user:
            flag=0
            print("用户名可以使用!\n")
            pswd=input("请输入密码:")
            user[name]=pswd
            print("注册成功,赶紧试试登陆吧!")
            break
        else :
            flag=1
            continue
    while fun=='E' or fun=='e':
        if flag1:
            name=input("您输入的用户名不存在请重新输入:")
        else:
            name=input("请输入用户名:")      
        if name not in user:
            flag1=1
            continue
        else:
            flag1=0
            pswd=input('请输入密码:')
            if pswd==user[name]:
                flag2=1
                break
            else:
                print("密码错误")
                break
    if fun=='Q' or fun=='q':
        print("|--- 感谢使用 ---|")
        break
            
        
            
        

版本2

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('注册成功,赶紧试试登录吧^_^')

def old_user():
    prompt = '请输入用户名:'
    while True:
        name = input(prompt)
        if name not in user_data:
            prompt = '您输入的用户名不存在,请重新输入:'
            continue
        else:
            break
    
    passwd = input('请输入密码:')
    pwd = user_data.get(name)
    if passwd == pwd:
        print('欢迎进入XXOO系统,请点右上角的X结束程序!')
    else:
        print('密码错误!')

def showmenu():
    prompt = '''
|--- 新建用户:N/n ---|
|--- 登录账号:E/e ---|
|--- 推出程序:Q/q ---|
|--- 请输入指令代码:'''

    while True:
        chosen = False
        while not chosen:
            choice = input(prompt)
            if choice not in 'NnEeQq':
                print('您输入的指令代码错误,请重新输入:')
            else:
                chosen = True

        if choice == 'q' or choice == 'Q':
            break
        if choice == 'n' or choice == 'N':
            new_user()
        if choice == 'e' or choice == 'E':
            old_user()

showmenu()

 

posted @ 2018-01-29 21:29  消灭猕猴桃  阅读(433)  评论(0编辑  收藏  举报