Python学习之字典(dict)

字典(dict)

字典创建方法
  • 赋值创建字典
    #赋值创建字典,key-value,键值对
    d = {“key1”:”value1”,”key2”:”value2”}
    print d
    services = {“ssh”:22,”ftp”:[20,21],”http”:[80,8080]}
    print services
  • 通过工厂函数创建字典
    #工厂函数创建字典
    userinfo = dict(user1=”123”,user2=”456”,user3=”789”)
    #通过字典的fromkeys方法创建字典,所有元素有一个默认值
    #如果没有指定默认值,默认为None
    print {}.fromkeys(“hello”)
    #给每个元素设置默认值为“123“
    print {}.fromkeys([“user1”, “user2”, “user3”], “123”)
应用案例: 生成多个银行卡号,并初始化密码为”000000”
# 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100
cardids = []
for i in range(1, 101):    
    a = "610%.3d" %(i) 
    cardids.append(a)
# print cardids      # cardids 是列表
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)
  • 重点: setdefault 和 update方法的不同
    services = {“ftp”:[20,21]}
    # 通过字典名 [key]=value, 将 key-value 添加到字典中 ;
    services[‘http’] = [80, 8080]
    print services
    输出:{‘ftp’: [20, 21], ‘http’: [80, 8080]}
    #update 方法实现添加: key 存在,覆盖 value 值, 否则,添加
    services = {“ftp”:[20,21]}
    services1 = {‘http’:[80,8080]}
    services.update(services1)
    print services
    {‘ftp’: [20, 21], ‘http’: [80, 8080]}
    更建议使用如下方法:
    services.update(http=[80,8080], ftp=22)
    print services
    {‘ftp’: [20, 21], ‘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)

services = {‘ftp’: 22, ‘http’: [80, 8080]}
- 查看key值
services.keys()
[‘ftp’, ‘http’]
services.viewkeys()
[22, [80, 8080]]
services.iterkeys()
- 查看value值
services.values()
[22, [80, 8080]]
- 查看key-value键值对
services.items()
[(‘ftp’, 22), (‘http’, [80, 8080])]
- 查看key是否存在
services.has_key(‘ftpp’)
False
- 查看指定 key 对应的 value 值;如果 key 不存在,不报错; 如果存在,返回 value 值
- services[‘ftp’] 如果 key 不存在,直接报错

  • # - d.pop(key) 删除指定 key 的字典元素
  • # - d.popitem() 随机删除字典的 key-value 元素
  • # - del d[key] 删除指定 key 的字典元素
  • # - d.clear() 清空字典元素

循环遍历字典

for i,j in services.items():
    print i,j

ftp 22
http [80, 8080]

# 默认情况下遍历字典的 key 值

for i in services:
    print i

ftp
http

字典应用

应用1: 通过字典实现case语句
  • 目前python不支持case语句
  • 实现case语句的两种方式
    if…elif…elif…else…
    字典实现
if…elif…elif…else…实现case语句
# if...elif...elif...else... 实现:
#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
# case 语句
if ope == "+":
    print num1+num2
elif ope == "-":
    print num1-num2
elif ope == "*":
    print num1*num2
elif ope == "/":
    print num1/num2
else:
    print "error operator"

字典实现 case 语句

#coding:utf-8
"""
# 实现四则运算
- 用户分别输入第一个数字,运算操作符,第三个数字;
- 根据用户的运算操作打印出运算结果;
"""
from __future__ import division
num1 = input()
ope = raw_input()
num2 = input()
d = {
    "+" : num1+num2,
    "-" : num1-num2,
    "*" : num1*num2,
    "/" : num1/num2,
}
if not ope in d:
    print "error operator"
else:
    print d[ope]

应用2:用户管理系统

  • 1.注册新用户
    如果注册用户已经存在,则报错
    需要填写信息: name, passwd, gender, email,age
  • 2.用户登录 要求同之前写的用户登录系统
  • 3.注销用户 用户注销时,需要输入用户名和正确的用户密码
  • 4.显示用户信息 显示系统中存在所有已经注册用户的信息
  • 5.退出系统
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值