1.字典的创建
【1】赋值创建字典
Dict={“k1”:”v1”,”k2”:”v2”}
【2】通过工厂函数创建字典
Dict=dict(k1=”v1”,k2=”v2”) 注:括号内可以写也可以不写
【3】通过fromkeys创建字典,所有元素有一个默认值,如果没有默认值,则默认为None
{}.fromkeys([“k1”,”k2”,”k3”],”123”)创建字典内容为三个key值,对应的值均为123
测试:生成银行卡并初始密码
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :[email protected] #
# Version : #
# Create_Date:2017-12-30 01:56:05 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " 批量产生卡号"
print "#**************************************#"
head = "610"
test = []
for i in range(1,100):
test.append(head+"%.3d"%(i)) #产生610001、610002....610100
test={}.fromkeys(test,"0"*6)
count = 0
for i,v in enumerate(test):
print v+":"+test[v],
if i%4 == 0 : #每行显示4个数据
print
2.分析字典的特性(跟元组和列表比较)
【1】字典不能索引和切片,因为字典是无序的数据类型;
【2】字典不支持重复和连接;
【3】字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in
3.字典的增删改查
【1】增
Dict[k1]=v1使k1的值为v1
Dict.update()字典更新,括号里也可以是字典名称,key值存在,覆盖value值,否则添加。
Dict.setdefault(“a”,1)实现添加,key值存在,不覆盖value值,否则添加。
【2】改
Dict[key]=value
Dict.update({‘a’:2,’b’:3})
Dict.update(a=2,b=3)
【3】查
查看key值:
Dict.keys()
Dict.viewkeys()给所有key组成的列表起名字
Dict.iterkeys()
查看value值:
Dict.values()
查看key-value键值对:
Dict.items()
查看key是否存在:
Dict.has_key(“key”)
查看指定key对应的value值,如果key不存在,不报错,如果存在,返回value值:
Dict.get(“key”)
【4】删
删除指定key的字典单元:
Dict.pop(key)
随即删除字典的key-value元素:
Dict.popitem()
删除指定key的字典元素:
Del Dict[key]
清空字典元素:
Dict.clear()
循环编历字典:
for i,j in Dict.items():
Print i,j
4.字典应用
应用1: 通过字典实现case语句
目前python不支持case语句;
实现case语句的两种方式:
【1】if...elif...elif...else...
【2】字典实现
测试:四则运算
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :[email protected] #
# Version : #
# Create_Date:2017-12-30 03:43:57 #
# Description: #
# #
#**************************************#
from __future__ import division
print "#**************************************#"
print " 四则运算"
print "#**************************************#"
# 字典
def fun1(operate,num1,num2):
d = {
"+" : "%d+%d=%d"%(num1,num2,num1+num2),
"-" : "%d+%d=%d"%(num1,num2,num1-num2),
"*" : "%d+%d=%d"%(num1,num2,num1*num2),
"/" : "%d+%d=%d"%(num1,num2,num1/num2)
}
if operate in d:
print d[operate]
else:print "ERROR!!!!!"
# 非字典
def fun2(operate,num1,num2):
if operate == '+':
print "%d + %d = %d"%(num1,num2,num1+num2)
elif operate == '-':
print "%d - %d = %d"%(num1,num2,num1-num2)
elif operate == '*':
print "%d X %d = %d"%(num1,num2,num1*num2)
elif operate == '/':
print "%d / %d = %.2f"%(num1,num2,num1/num2)
else:print "ERROR!!!!!!!"
def main():
while True:
num1 = input("num1:")
operate = raw_input("operate:")
num2 = input("num2:")
print "字典"
fun1(operate,num1,num2)
print "非字典"
fun2(operate,num1,num2)
if raw_input("是否继续(y/n):") == "n":break
if __name__ == "__main__":
main()
5.应用2:用户管理系统
【1】注册新用户
如果注册用户已经存在,则报错;
需要填写信息: name, passwd, gender, email,age;
【2】用户登录 要求同之前写的用户登录系统
【3】注销用户 用户注销时,需要输入用户名和正确的用户密码
【4】显示用户信息 显示系统中存在所有已经注册用户的信息;
【5】退出系统
#!/usr/bin python
#encoding:utf-8
#**************************************#
# Author :wang #
# Email :[email protected] #
# Version : #
# Create_Date:2017-12-29 21:16:03 #
# Description: #
# #
#**************************************#
print "#**************************************#"
print " 用户登录系统"
print "#**************************************#"
username = ["tom","jary","haha"]
password = ["123","456","789"]
def display():
print '''
【1】用户登陆
【2】用户注册
【3】用户注销
'''
select = input("请选择(1/2/3):")
return select
def denglu():
count = 0
user = raw_input("用户名:")
while count < 3:
paswd = raw_input("密 码:")
if user in username:
i = username.index(user)
if paswd == password[i]:
print "HELLO"
break
else:
count +=1
print "你已经登陆失败%d次,剩余%d次机会。"%(count,3-count)
else:
print "用户不存在!!!"
else:
print "out of time"
def zhuce():
while True:
user = raw_input("用户名:")
paswd1 = raw_input("设置密码:")
paswd2 = raw_input("请再次输入密码:")
if paswd2 == paswd1:
username.append(user)
password.append(paswd1)
print "注册成功"
break
else:
print "两次输入密码不一致,请重新输入"
def zhuxiao():
user1 = raw_input("请输入用户名:")
paswd1 = raw_input("请输入密码:")
select = raw_input("是否删除(y/n)?")
if select == "y":
index = username.index(user1)
del username[index]
del password[index]
print "注销成功".username.password
def main():
select = display()
while True:
if select == 1:
denglu()
elif select == 2:
zhuce()
elif select == 3:
zhuxiao()
elif select not in [1,2,3]:
print "选项无效,清重新选择!!!"
a = raw_input("是否继续(y/n)?")
if a == "n":
break
if __name__=="__main__":
main()