字典(dict)

字典创建

赋值创建字典

通过工厂函数创建字典

通过字典的 fromkeys 方法创建字典

赋值创建字典 , key-value , 键值对

通过工厂函数创建字典

通过字典的 fromkeys 方法创建字典,所有元素有一个默认值;

如果没有指定默认值,默认为 None;

{‘h’: None, ‘e’: None, ‘l’: None, ‘o’: None}

给每个元素设置默认值为 “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)

services.update(http=[80,8080], ftp=22)

{‘ftp’: 22, ‘http’: [80, 8080]}

setdefault 实现添加: key 存在,不覆盖 value 值, 否则,添加

services = {“ftp”:[20,21]}

services.setdefault(“ftp”, 22)

{‘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:

5 num1 = input(‘a:’)

6 ope = raw_input(“运算符”)

7 num2 = input(‘b:’)

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

5 num1 = input()

6 ope = raw_input()

7 num2 = input()

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’]

14 choice = raw_input(info)

15 if choice == “1”:

16 user = raw_input(“user:”)

17 if user in users:

18 print(“用户已存在”)

19 else:

20 users.append(user)

21 inpasswd = raw_input(“passwd:”)

22 passwd.append(inpasswd)

23 name = raw_input(“name:”)

24 gender = raw_input(“gender:”)

25 email = raw_input(“email:”)

26 elif choice == “2”:

27 trycount = 0

28

29 while trycount < 3:

30 inuser = raw_input(“user:”)

31 if inuser not in users:

32 print (“用户不存在”)

33 exit()

34 inpasswd = raw_input(“passwd:”)

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:

47 inuser = raw_input(“user:”)

48 if inuser not in users:

49 print (“用户不存在”)

50 exit()

51 inpasswd = raw_input(“passwd:”)

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()

你可能感兴趣的:(字典(dict))