Python字典处理技巧
从字典中取值(不想由于搜索的键不存在而异常)
解决方法:
使用字典的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字典处理技巧的更多相关文章
- Python字典增删操作技巧简述
Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些基础应用.比如今天我们为大家介绍的Python字典的相关操作,就是我们在学习过程中需要熟练掌握的技 ...
- !!Python字典增删操作技巧简述+Python字典嵌套字典与排序
http://developer.51cto.com/art/201003/186006.htm Python编程语言是一款比较容易学习的计算机通用型语言.对于初学者来说,首先需要掌握的就是其中的一些 ...
- Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据
Python 高效编程技巧实战(2-1)如何在列表,字典, 集合中根据条件筛选数据 学习目标 1.学会使用 filter 借助 Lambda 表达式过滤列表.集合.元组中的元素: 2.学会使用列表解析 ...
- Python 代码优化常见技巧
代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 80% 的工作量.优化通常包含两方 ...
- python字典的常用操作方法
Python字典是另一种可变容器模型(无序),且可存储任意类型对象,如字符串.数字.元组等其他容器模型.本文章主要介绍Python中字典(Dict)的详解操作方法,包含创建.访问.删除.其它操作等,需 ...
- <转> 30 个有关 Python 的小技巧
目录[+] 1.1 拆箱 1.2 拆箱变量交换 1.3 扩展拆箱(只兼容python3) 1.4 负数索引 1.5 切割列表 1.6 负数索引切割列表 1.7指定步长切割列表 1.8 负数步长切割列表 ...
- python基础===Python 代码优化常见技巧
Python 代码优化常见技巧 代码优化能够让程序运行更快,它是在不改变程序运行结果的情况下使得程序的运行效率更高,根据 80/20 原则,实现程序的重构.优化.扩展以及文档相关的事情通常需要消耗 8 ...
- [转载]关于python字典类型最疯狂的表达方式
一个Python字典表达式谜题 让我们探究一下下面这个晦涩的python字典表达式,以找出在python解释器的中未知的内部到底发生了什么. # 一个python谜题:这是一个秘密 # 这个表达式计算 ...
- 30个有关Python的小技巧,给程序员的 30 个基本 Python 贴士与技巧
30个有关Python的小技巧 2013/07/04 · Python, 开发 · 4 评论 · Python 分享到: 66 本文由 伯乐在线 - Kevin Sun 翻译.未经许可,禁止转载!英文 ...
随机推荐
- 基于Visual C++2013拆解世界五百强面试题--题15-递归相加
有一分数序列: 1/2 , 1/4 , 1/6 , 1/8 ......,用递归的方法,求此数列20项之和. 可以看出规律:每一项位1/n*2 这个很容易些递归,但是要注意一点,使用浮点数相除保存: ...
- 基于Visual C++2013拆解世界五百强面试题--题7-链表的各种操作
请用C实现一个链表,实现链表的查找,逆置,替换,删除,添加,清空,创建. 查找.替换和删除.添加里面都会用到遍历链表的操作,所以重点在于遍历, 链表的逆置和清空考虑到效率,我们可以用递归实现, 至于创 ...
- HDU 1130 How Many Trees?
裸的卡特兰数 C++#include<iostream> #include<cstdio> using namespace std; #define base 10000 #d ...
- VS2008编译iconv静态链接库
iconv是将一种编码格式转换为还有一种编码格式的开源库,比如能够把Windows环境下通用的ASCii(中文是GB2312)编码转换为国际通用的Unicode编码 iconv最新版本号仅仅支持Min ...
- Extending your SharePoint 2007 site with Microsoft ASP.NET AJAX 3.5
After ASP.NET 3.5 has been installed you need to modify the web.config file of your MOSS web site wi ...
- FreeCodeCamp:Slasher Flick
要求: 打不死的小强! 返回一个数组被截断n个元素后还剩余的元素,截断从索引0开始. 结果: slasher([1, 2, 3], 2) 应该返回 [3]. slasher([1, 2, 3], 0) ...
- 一个简单链表的C++实现
/* LList.cpp * Author: Qiang Xiao * Time: 2015-07-12 */ #include<iostream> using namespace std ...
- NOIP2015前
时间过得好快...明天就要出发去NOIP了...然后再过半年就要省选了....希望自己能取得好成绩吧... NOIP2015 bless all !
- Linux命令压缩与解压缩
zip格式的文件:zip和unzip zip 命令: # zip test.zip test.txt 它会将 test.txt 文件压缩为 test.zip ,当然也可以指定压缩包的目录,例如 /ro ...
- 设计模式值六大原则——依赖倒置原则 (DIP)
依赖倒置原则(Dependence Inversion Principle,DIP)的原始定义: 高层模块不应该依赖底层模块,两者都应该依赖其抽象: 抽象不应该依赖细节: 细节应该依赖抽象. 依赖倒置 ...