字典创建
赋值创建字典
通过工厂函数创建字典
通过字典的 fromkeys 方法创建字典
赋值创建字典 , key-value , 键值对
通过工厂函数创建字典
通过字典的 fromkeys 方法创建字典,所有元素有一个默认值;
如果没有指定默认值,默认为 None;
print {}.fromkeys(“hello”)
{‘h’: None, ‘e’: None, ‘l’: None, ‘o’: None}
给每个元素设置默认值为 “123”;
print {}.fromkeys([“user1”, “user2”, “user3”], “123”)
{‘user2’: ‘123’, ‘user3’: ‘123’, ‘user1’: ‘123’}
应用案例: 生成多个银行卡号,并初始化密码为”000000”
卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003…10
4 cardids = []
5 for i in range(1,11):
6 a = “610%.3d” %(i)
7 cardids.append(a)
8 print {}.fromkeys(cardids,”000000”)
分析字典的特性(跟元组和列表比较)
字典不能索引和切片,因为字典是无序的数据类型;
字典不支持重复和连接;
字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in
字典的增删改查
增
- 字典名[key] = value
- d.update(a=1, b=2)
- d.update({‘a’:1, ‘b’,2})
- d.setdefault(‘a’, 1)
通过字典名 [key]=value, 将 key-value 添加到字典中 ;
services = {“ftp”:[20,21]}
services[‘http’] = [80, 8080]
{‘ftp’: [20, 21], ‘http’: [80, 8080]}
update 方法实现添加: key 存在,覆盖 value 值, 否则,添加
services = {“ftp”:[20,21]}
services1 = {‘http’:[80,8080]}
services.update(services1)
print services
services.update(http=[80,8080], ftp=22)
print services
{‘ftp’: 22, ‘http’: [80, 8080]}
setdefault 实现添加: key 存在,不覆盖 value 值, 否则,添加
services = {“ftp”:[20,21]}
services.setdefault(“ftp”, 22)
print services
{‘ftp’: [20, 21]}
改
字典名[key]=value
d.update({‘a’:2, ‘b’:3})
d.update(a=2, b=3)
查
查看key值;
查看value值;
查看key-value键值对;
查看key是否存在;
services = {‘ftp’: 22, ‘http’: [80, 8080]}
查看 key 值
services.keys()
services.viewkeys() # 给 key 起名字
services.iterkeys()
查看 value 值
services.values()
services.viewvalues()
查看 key-value 键值对
services.items()
[(‘ftp’, 22), (‘http’, [80, 8080])]
查看 key 是否存在 ;
services.has_key(‘ftpp’)
查看指定 key 对应的 value 值;如果 key 不存在,不报错; 如果存在,返回 value 值;
services[‘ftp’] 如果 key 不存在,直接报错;
services.get(‘ftpp’)
删
d.pop(key) 删除指定 key 的字典元素;
d.popitem() 随机删除字典的 key-value 元素 ;
del d[key] 删除指定 key 的字典元素;
d.clear() 清空字典元素
字典应用
应用1: 通过字典实现case语句
目前python不支持case语句;
实现case语句的两种方式:
if…elif…elif…else…
字典实现
if…elif…elif…else… 实现:
3 from future import division
4 while True:
8
9 if ope == “+”:
10 print (“%d+%d=%d”) %(num1,num2,num1+num2)
11 elif ope == “-“:
12 print (“%d-%d=%d”) %(num1,num2,num1-num2)
13 elif ope == “*”:
14 print (“%d*%d=%d”) %(num1,num2,num1*num2)
15 elif ope == “/”:
16 print (“%d/%d=%d”) %(num1,num2,num1/num2)
17 else:
18 print “error operator”
字典实现 case 语句
4 from future import division
8
9 d = {
10 “+”:num1+num2,
11 “-“:num1-num2,
12 “*”:num1*num2,
13 “/”:num1/num2
14 }
15
16 if not ope in d:
17 print “error operator”
18 else:
19 print d[ope]
应用2:用户管理系统
1.注册新用户
如果注册用户已经存在,则报错;
需要填写信息: name, passwd, gender, email,age;
2.用户登录 要求同之前写的用户登录系统
3.注销用户 用户注销时,需要输入用户名和正确的用户密码
4.显示用户信息 显示系统中存在所有已经注册用户的信息;
5.退出系统
4 info = ”’
5 用户管理系统
6 1)注册新用户
7 2)用户登陆
8 3)注销用户
9 4)显示用户信息
10 5)退出系统
11 ”’
12 users = [‘xixi’]
13 passwd = [‘123’]
15 if choice == “1”:
17 if user in users:
18 print(“用户已存在”)
19 else:
20 users.append(user)
22 passwd.append(inpasswd)
26 elif choice == “2”:
27 trycount = 0
28
29 while trycount < 3:
31 if inuser not in users:
32 print (“用户不存在”)
33 exit()
35 if inpasswd == passwd[users.index(inuser)]:
36 print (“ok”)
37 exit()
38 else:
39 print(“帐号密码不匹配”)
40 trycount +=1
41 else:
42 print “登录失败”
43 elif choice == “3”:
44 trycount = 0
45
46 while trycount < 3:
48 if inuser not in users:
49 print (“用户不存在”)
50 exit()
52 if inpasswd == passwd[users.index(inuser)]:
53 print (“ok”)
54 users.remove(inuser)
55 passwd.pop(users.index(inuser))
56 else:
57 print(“帐号密码不匹配”)
58 trycount +=1
59 else:
60 print “登录失败”
61 elif choice == “4”:
62 print users,passwd
63 elif choice == “5”:
64 exit()