python学习笔记之字典操作

字典概述:在python中也提供了内置的映射类型--字典。映射其实就是一组key和value以及之间的映射函数,
其特点是:key的唯一性、key与value的一对多的映射。
分析字典的特性(跟元组和列表比较)
字典不能索引和切片,因为字典是无序的数据类型;
字典不支持重复和连接;
字典支持成员操作符: 判断字典的key值是否在字典中存在; in, not in

1.字典的创建

 
 
      字典的基本形态dict={key1:value1, key2:value2...}
      创建方式1:直接创建
            dict1={}  
            dict2={'name':'wrh','port':'80'}
      创建方式2:使用工厂方法dict,通过其他映射(例如字典)或者(键,值)这样的序列对建立
            items=[('name','wrh'),('port','80')]
            dict2=dict(items)
            dict1=dict((['name','wrh'],['port','80']))             或者:             userinfo = dict(user1="123", user2="456", user3 ="789")
      创建方式3:使用内建方法fromkeys()创建’默认‘字典,字典中元素具有相同的value(如果没有给出,默认为none)
            dict1={}.fromkeys(('x','y'),-1)
            #dict={'x':-1,'y':-1}
            dict2={}.fromkeys(('x','y'))
            #dict2={'x':None, 'y':None}    应用案例1: 生成多个银行卡号,并初始化密码为"000000" 卡号由 6 位组成, 前 3 位是 610 , 后面的依次是 001, 002, 003...100
   #!/usr/bin/env python
   #coding:utf-8
   """
   应用案例:生成多个银行卡号,并初始化密码为“000000”
   """
   cardids = []
   for i in range(1, 101):          # i = 1, 2, 3, 4...100
	   a = "610%.3d" %(i)       # a= 610001, 610002, 610003, ....610100
	   cardids.append(a)
				 # cardids 是列表
   print {}.fromkeys(cardids, "000000")

   

2.访问字典中的值

      最常用和基本的莫过于利用key访问value了
      a.通过key访问value之get方法
           dict1.get('name')      #也可以直接是dictionary['key1'],但是当key1不存在其中时,会报错;此时用get则返回None
      b.随机访问其中键值对
           字典中是无序的,利用popitem方法是随机弹出一个键值对
      c.返回字典所有值的列表
           方法d.values()

3.查看字典

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

4.访问键值对和字典添加

      a.遍历方式
         for r in dicitonary    #r是dictionary中的键值对
       
      b.修改(更新)或添加
         dictionary[key1]=value1# 通过字典名 [key]=value, 将 key-value 添加到字典中 ;
     
      c.update 方法实现添加: key 存在,覆盖 value 值, 否则,添加
          services = {"ftp":[20,21]}
          services1 = {'http':[80,8080]}
        # services.update(services1)
        # 更建议使用 services.update(http=[80,8080], ftp=22)
     
       # setdefault 实现添加: key 存在,不覆盖 value 值, 否则,添加
          services = {"ftp":[20,21]}
          services1 = {'http':[80,8080]}
          services.setdefault("ftp", 22)

5.删除     

      • dic.pop(key)     根据key值删除字典的元素;
     • dic.popitem()    随机删除字典元素,返回(key,value)
     • dic.clear()      删除字典中的所有元素
     • del dic          删除字典本身

6.排序

     sorted(dic.iteritems(), key=lambda d[0]:d[1], reverse=False)
     说明:对字典dic中的元素按照d[1](d[1]是value, d[0]是key,和d没关系,可以改为a什么的)进行升序排序,
     通过设置reverse的True或False可以进行逆序,
     并返回排序后的字典(该排序后的字典由元组组成,其形式为[(key1,value1),(key2,value2),...],且原字典保持不变)

7.其他

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

          2.字典实现
   
#!/usr/bin/env python
#coding:utf-8
"""
# 字典实现 case 语句
# 实现四则运算
# 用户分别输入第一个数字,运算操作符,第三个数字;
# 根据用户的运算操作打印出运算结果;
"""
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]



 
   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>