python基础教程之字典操作详解


Posted in Python onMarch 25, 2014

字典
dictionary

1.键值对的集合(map)

2.字典是以大括号“{}”包围的数据集合

3.字典是无序的,在字典中通过键来访问成员。 可变的,可嵌套,可以原处修改扩展等,不产生新的字典

4.字典的键,可以是字符串(大小写敏感),数字常量或元组(不可变类型),同一个字典的键可以混用类型。字典的键必须是可哈希的

元组作为键的条件是,元组内的值都是不可变类型

a = (1,2)  #可以作为键
b = (1,2,[3,4])  #不可以

5.字典的值可以是任意类型,可以嵌套,可以自由修改

声明
创建字典的几种方式:

1.基本

d = {} #空字典
d = {'name':'tom', 'age':22} 
#等价
d = {}
d['name'] = 'tom'
d['age'] = 22

2.dict

d = dict() #空
d = dict(name='tom', age=22)   
d = dict([('name','tom'), ('age',22)])
#等价
keys = ['name','age']
values = ['tom', 22]
d = dict(zip(keys,values))

3.fromkeys

不指定default_value的话,默认None

>>> dict.fromkeys(['name','age'],'default_value')
{'age': 'default_value', 'name': 'default_value'}

基本操作

0.获取帮助

help(dict)

1.判定键是否存在于字典中
if k in d:   #k not in
    dosomething()

2.读取

d = {'a':1, 'b':2}
print d['a']  #得到1,但是若键不存在,将引发异常KeyError。慎用,建议不使用

print d.get('c', 3) #得到3,get方法,若是键不存在,返回第二个参数default_value.若是没有设default_value返回None
处理missing-key错误三种方式,根据具体需要
if k in d:
    print d[k]
try:
    print d[k]
except KeyError:
    dosomething()
print d.get(k, default)
#等价 d[k] if k in d else default

3.遍历

方式1:

for key in d:
    print key, d[key]
#等价 for key in d.keys()

方式2:

for key,value in d.items():
    print key, value

4.修改方式1:某个键值对

d['key'] = 'newvalue'

方式2:批量添加或更新

#另一个字典
d.update({'key':'newvalue'})  #这里支持一整组值
#元组列表
d.update( [ ('a',1), ('b',2) ] ) #每个元组两个元素,(key,value)
#**key
d.update(c=3, e=4)

5.删除

del d['key']
value = d.pop('key') #删除并返回值
d.clear() #清空
6.其他:
len(d)   #长度
d.keys()  #key列表
d.values()  #value列表
d.items()   #(key, value) 列表
c = d.copy()   #浅拷贝
#返回迭代器,节省内存
d.iterkeys()
d.itervalues()
d.iteritems()
d.setdefault('name', 'ken') #若原来没有,设置,否则原值不变

其他
1.字典排序按照key排序

keys = d.keys()
keys.sort()
for key in keys:
    print d.get(key)

按照value进行排序

sorted(d.items(), lambda x,y: cmp(x[1],y[1]))

另外:
#假设d为字典
sorted(d)  #返回同 sorted(d.keys()),返回的是key排序

2.自定义对象作为key

必须:

def __hash__(self):
    pass
def __eq__(self, other):
    pass

3.字典拷贝浅拷贝:

c = d.copy() #

深拷贝必须用copy模块
form copy import deepcopy
c = deepcopy(d)

4.一种使用场景假设有一个很大的列表l,假设10w条记录

有一个小列表b,要判断b中元素是否在l中

如果:

for i in b:
    if i in l:
        dosomething()

你会发现非常非常慢...因为第二个in语句,会遍历10w条….

改进:

d = dict.fromkeys(l)
for i in b:
    if i in d:
        dosomething()
#空间换时间,O(n) -> O(1)
Python 相关文章推荐
Python中无限元素列表的实现方法
Aug 18 Python
python实现的简单猜数字游戏
Apr 04 Python
Python中functools模块的常用函数解析
Jun 30 Python
基于python内置函数与匿名函数详解
Jan 09 Python
《Python学习手册》学习总结
Jan 17 Python
Python编程argparse入门浅析
Feb 07 Python
使用Django2快速开发Web项目的详细步骤
Jan 06 Python
python初学者,用python实现基本的学生管理系统(python3)代码实例
Apr 10 Python
django富文本编辑器的实现示例
Apr 10 Python
Python3.5迭代器与生成器用法实例分析
Apr 30 Python
Python3.5局部变量与全局变量作用域实例分析
Apr 30 Python
django实现更改数据库某个字段以及字段段内数据
Mar 31 Python
python基础教程之元组操作使用详解
Mar 25 #Python
python基础教程之简单入门说明(变量和控制语言使用方法)
Mar 25 #Python
python使用循环实现批量创建文件夹示例
Mar 25 #Python
python实现图片批量剪切示例
Mar 25 #Python
使用python实现strcmp函数功能示例
Mar 25 #Python
python读写ini文件示例(python读写文件)
Mar 25 #Python
python判断windows隐藏文件的方法
Mar 21 #Python
You might like
PHP中CURL方法curl_setopt()函数的参数分享
2013/01/19 PHP
PHP文件去掉PHP注释空格的函数分析(PHP代码压缩)
2013/07/02 PHP
PHP验证码函数代码(简单实用)
2013/09/29 PHP
教你如何用php实现LOL数据远程获取
2014/06/10 PHP
PHP数组操作类实例
2015/07/11 PHP
TP5框架实现的数据库备份功能示例
2020/04/05 PHP
跨浏览器开发经验总结(三)   警惕“IE依赖综合症”
2010/05/13 Javascript
JQuery datepicker 使用方法
2011/05/20 Javascript
详解Javascript继承的实现
2016/03/25 Javascript
利用nodejs监控文件变化并使用sftp上传到服务器
2017/02/18 NodeJs
JavaScript中双符号的运算详解
2017/03/12 Javascript
Jquery+Ajax+xml实现中国地区选择三级联动菜单效果(推荐)
2017/06/09 jQuery
JavaScript变量类型以及变量作用域详解
2017/08/14 Javascript
微信小程序用户位置权限的获取方法(拒绝后提醒)
2018/11/15 Javascript
可能被忽略的一些JavaScript数组方法细节
2019/02/28 Javascript
微信小程序实现卡片左右滑动效果的示例代码
2019/05/01 Javascript
js getBoundingClientRect使用方法详解
2019/07/17 Javascript
微信小程序 自定义复选框实现代码实例
2019/09/04 Javascript
python实现获取Ip归属地等信息
2016/08/27 Python
解决pycharm回车之后不能换行或不能缩进的问题
2019/01/16 Python
python给指定csv表格中的联系人群发邮件(带附件的邮件)
2019/12/31 Python
Python调用百度OCR实现图片文字识别的示例代码
2020/07/17 Python
使用CSS3滤镜的filter:blur属性制作毛玻璃模糊效果的方法
2016/07/08 HTML / CSS
Html5 canvas画图白板踩坑
2020/06/01 HTML / CSS
英国户外服装品牌:Craghoppers
2019/04/25 全球购物
Claire’s法国:时尚配饰、美容、珠宝、头发
2021/01/16 全球购物
《小猫刮胡子》教学反思
2014/02/21 职场文书
艺术设计专业毕业生推荐信
2014/07/08 职场文书
个人授权委托书样本
2014/09/13 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
网络营销计划书
2015/01/17 职场文书
宾馆客房管理制度
2015/08/06 职场文书
golang特有程序结构入门教程
2021/06/02 Python
Python学习之时间包使用教程详解
2022/03/21 Python
【海涛解说】pis亲自推荐,其实你从来不会玩NW
2022/04/01 DOTA
基于Apache Hudi在Google云构建数据湖平台的思路详解
2022/04/07 Servers