0.Python字典是否支持一键(key)多值(Value)?
不支持,对相同键再次赋值时,将会覆盖该键的上一个值。
eg:
1 dict1 = {1:"one",1:"数字" ,2:{"小甲鱼","小白"}} 2 print(dict1)
1.在字典中,如果试图为一个不存在的键(key)赋值会怎样?
会自动创建一个对应的键,并添加相应的值进去。
2.成员资格操作符(in ,not in)可以检查一个元素是否存在序列中,当然也可以用来检查一个键(key)费否存在字典中,那么请问哪种的检查效率更高些?为什么?
在字典中检查键是存在比在序列中检查指定元素是否存在更高效。字典的原理:(哈希算大存储),一步到位,不需要使用查找短发进行匹配,因此时间复杂度是0(1),效率非常高。
3.Python对键(key)和值(value)有没有什么类型要求?
Python对于键的要求高于对值的要求,要求他们必须是可哈希(Hash)的对象,不能是可变类型(包括变量,列表,字典本身等)。
但是python对值没有任何限制。
4.请目测下边代码执行后,字典dict1的内容是什么?
1 dict1 = { } 2 dict1 = dict1.fromkeys((1,2,3),("one","two","three")) 3 dict1 = dict1.fromkeys((1,3),"数字") 4 print(dict1)
>>>{1:"数字",2:"数字"}
注意:fromkeys方法是直接创建一个新的字典,不要试图使用它修改一个原有的字典,因为它会直接无情的把整个字典给覆盖掉。
5.如果你需要将字典dict1={1:“one”,2:“two”,3:"three"}拷贝到dict2,你应该怎么做?
方法1:dict2 = dict1.copy()----copy过去一个不随dict1变化而变化的字典。
方法2:dict3=dict1----通过赋值后得到的dict3会随着dict1的变化而变化,而dict1也会随着dict3的变化而变化。
1 dict1 = {1:"one",2:"two" ,3:"three"} 2 dict2 = dict1.copy() 3 dict3 = dict1 4 dict1[5]="five" 5 dict3[4]="four" 6 print(dict1) 7 print(dict2) 8 print(dict3)
动动手:
0.尝试编写一个用户登录程序(这次尝试将功能封装成函数),程序实现如图:
1 user_data ={ } 2 now_user = [] 3 4 def new_user(): 5 user_name = "请输入用户名:" 6 while True: 7 name = input(user_name) 8 if name in user_data: 9 user_name = name+"此用户名已被注册,请重新输入:" 10 continue 11 else: 12 break 13 password = input("请输入密码:") 14 user_data[name] = password 15 print("注册成功") 16 17 def old_user(): 18 user_name = "请输入用户姓名:" 19 while True: 20 name = input(user_name) 21 if name not in user_data: 22 user_name = "用户名不存在,请重新输入:" 23 continue 24 else: 25 break 26 password = input("请输入密码:") 27 # !!! 去取出name相对应的密码 28 user_password = user_data.get(name) 29 if password == user_password: 30 print("欢迎进入通讯录系统,请点击右上角的标符可结束程序。") 31 now_user.append(name) 32 else: 33 print("密码错误!") 34 35 36 def showmenu(): 37 menu ='''|---新建用户:N/n ---| 38 |---登录账号:E/e ---| 39 |---退出程序:Q/q ---| 40 |---请输入指令代码: 41 ''' 42 while True: 43 chosen = False 44 while not chosen: 45 choice = input(menu) 46 if choice not in 'NnEeQq': 47 print("请正确输入符号:") 48 elif choice in "Nn": 49 new_user() 50 elif choice in "Ee": 51 old_user() 52 elif choice in "Qq": 53 name = input("输入想退出的用户名:") 54 if name in now_user: 55 del name 56 print("已退出登录") 57 else: 58 print("该用户未登录") 59 break 60 showmenu()
腾了好久的python 又要开始了!!加油!