从字典中取值(不想由于搜索的键不存在而异常)

解决方法:

使用字典的get方法 (get方法只读取字典的值而不会去修改字典)

d={'key':'value'}
print d.get('key','not found')
print d.get('keys','not found')

假如键key存在,那么get方法就会返回相应的值,否则,返回第二个参数

给字典添加一个条目

解决方法:

使用字典的setdefault方法,假设正在创建一个由单词到页数的映射,关键的代码为

def addword(theIndex, word, pagenumber):
theIndex.setdefault(word, [ ]).append(pagenumber)

假设word键存在,setdefault返回的就是key对应的value,否则的话,就新增一个word键,并添加value,这里默认添加的是一个空的列表。

setdefault方法返回的是value,这里就是一个列表,代表了单词到页数的映射表,之后调用append方法,就可以添加这个页数了。

将列表元素交替的作为键和值来创建字典

解决方法:

使用dict和zip方法分片之后合并

def dictFormList(keyAndValues):
return dict(zip(keyAndValues[::2],keyAndValues[1::2]))

获取字典的一个子集

解决方法:

如果不想改动源字典

def sub_dict(somedict, somekeys, default=None):
return dict([(k, somedict.get(k, default)) for k in somekeys])

如果想从源字典中删除符合条件的项目

def sub_dict(somedict, somekeys, default=None):
return dict([(k, somedict.pop(k, default)) for k in somekeys])

反转字典

解决方法:

def invert_dict(d):
return dict([(v,k) for k,v in d.iteritems()])

用字典分派方法和函数(就是switch语句)

解决方法:

同样的,可以使用字典进行操作

animals=[]
number_of_felines=0
def deal_with_a_cat():
global number_of_felines
print "meow"
animals.append('feline')
number_of_felines+=1
def deal_with_a_dog():
print "bark"
animals.append('canine')
def deal_with_a_bear():
print "watch out for the *HUG*!"
animals.append('ursine') tokenDict={
"cat":deal_with_a_cat,
"dog":deal_with_a_dog,
"bear":deal_with_a_bear,
} words=["cat","bear","cat","dog"]
for word in words:
tokenDict[word]()
nf=number_of_felines
print 'we met %d feline%s' % (nf, 's'[nf==1:])
print 'the animal we met were:',' '.join(animals)

字典的并集和交集

解决方法:

使用fromkeys创建字典,例如

a=dict.fromkeys(xrange(1000))
b=dict.fromkeys(xrange(500,1500))

最快的计算并集的方法是

union=dict(a,**b)

而最快且最简洁的方法是

inter=dict.fromkeys([x for x in a if x in b])

Python字典处理技巧的更多相关文章

  1. Python字典增删操作技巧简述

    Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些基础应用.比如今天我们为大家介绍的Python字典的相关操作,就是我们在学习过程中需要熟练掌握的技 ...

  2. !!Python字典增删操作技巧简述+Python字典嵌套字典与排序

    http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...

  3. Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据

    Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...

  4. Python 代码优化常见技巧

    代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方 ...

  5. python字典的常用操作方法

    Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...

  6. <转> 30 个有关 Python 的小技巧

    目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...

  7. python基础===Python 代码优化常见技巧

    Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...

  8. [转载]关于python字典类型最疯狂的表达方式

    一个Python字典表达式谜题 让我们探究一下下面这个晦涩的python字典表达式,以找出在python解释器的中未知的内部到底发生了什么. # 一个python谜题:这是一个秘密 # 这个表达式计算 ...

  9. 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧

    30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...

随机推荐

  1. 宣布在 Azure 镜像库中正式推出 Windows Server 2012 R2 并降低 Windows Azure 的实例定价

    我们今天将宣布两条消息,为使用基础结构服务的客户提供更多选择和成本节约:在镜像库中推出 Windows Server 2012 R2 以及降低 Memory Intensive 计算实例定价. 虚拟机 ...

  2. 定制ToolChain for ARM

    **************************************************************************编写:王卫无,北京讯业互联科技有限公司版本号:V1. ...

  3. 一些常用的Intent及intent-filter的信息

    Uri Action 功能 备注 geo:latitude,longitude Intent.ACTION_VIEW 打开地图应用程序并显示指定的经纬度   geo:0,0?q=street+addr ...

  4. VS快捷键简单记录

    代码上下移动行:Alt+上下键 跳转相等大括号:Ctrl+]

  5. sign a third-party dll which don't have a strong name

    Problem: Assembly generation failed -- Referenced assembly '' does not have a strong name Cause: thi ...

  6. BZOJ 1599: [Usaco2008 Oct]笨重的石子( 枚举 )

    直接枚举 ------------------------------------------------------------------------------- #include<cst ...

  7. Microsoft Jet 数据库引擎找不到对象'Sheet1$_'。请确定对象是否存在,并正确地写出它的名称和路径

    We have a CRM add-on for Importing Price Lists into CRM. For this tool, we expect the details to be ...

  8. linq 总结

    linq 常用方法: top   var query=(from u in User ...).Take(10) dblinq的坑: 时间必须当参数传入,否则会报错 多个left join时,如果jo ...

  9. 基于原生js的图片延迟加载

    当页面图片比较多的时候,我们通常会做一个延迟加载,避免页面打开时一下子的请求数太多,加载过慢影响用户体验. 如果项目用了jquery框架,则可以直接用 jquery.lazyload.可在jquery ...

  10. 关于64位Windows7系统下INF的安装问题

    原文 http://bbs.csdn.net/topics/360262492 我的电脑 ——>属性 ——>设备管理器 ——>操作 ——>添加过时硬件 但是,64位系统上报“指 ...