在用python处理dict 的时候,有几个该注意的地方,这里跟大家提一下:

1)操作dict 时,尽量少产生新的列表对象。比如:

   遍历dict的时候,如果用

dic = {"a":"hello","b":"hi","c":"no"}
for key,value in dic.items():
print(key,value)

  此时,dic.items() 会产生一个新的列表对象,占用宝贵的内存,我们可以换成:

for key in dic:
print(key,dic[key])

  直接遍历dict中的key,再取出对应key的value

  像是判断  key 是否存在字典中,也是相同的道理

dic = {"it":"zhang","hi":"hello"}
s = "hi"

  如果我们用以下的判断方法,会产生一个新的列表对象,占用内存

s in dic.keys()
  可以直接用:
s in dic

  注意一点的是,has_key 在python3中已经被移除,因为用in处理速度更快

2)合并字典

  常用的操作是

dict(dic1,**dic2)
{**dic1,**dic2}

  这样的合并方式会产生新的字典对象

  而如果是 update 更新操作,即是在原来的字典对象上进行更新,如果dic1 和dic2 有相同key,那么dic1 的值会被dic2覆盖

dic1.update(dic2)

3)排序

  字典本质上是个无序的容器对象(其实Python3.6开始支持有序,不过这个有序是指按照key的添加顺序),如果我们要对字典的 key 或者 value 排序,一般是将其转换为list,再按照key或者value排序。

4)defaultdict    默认初始化字典

  顾名思义,可以用来初始化字典:

dic = defaultdict(int)

  看起来和

dic = {}

  没啥差别,但是,当你要做数值操作,比如加减乘除,计数啥的,就很有用了,以下是对列表chars 计数的操作

chars = ['a', 'b','c','a','d','c']
dd = defaultdict(int)
for i in chars:
dd[i] += 1
print(i,dd[i])

  当我们取字典中不存在的键值时,会报 KeyError 的错误

f = {"a":1,"b":2}
print(f["c"])

  此时defaultdict可以对不存在的键赋值,通过传入不同的变量类型,相应的也会输出不同类型变量,如果要制定特定值的话,需要加上lambda 匿名函数

  总结defaultdict 的用处:1)初始化字典   2)对不存在的键赋值

  

  

python 字典 dict 该注意的一些操作的更多相关文章

  1. python字典dict的增、删、改、查操作

    ## python字典dict的增.删.改.查操作dict = {'age': 18, 'name': 'jin', 'sex': 'male', }#增# dict['heigh'] = 185 # ...

  2. python 字典dict - python基础入门(15)

    前面的课程讲解了字符串str/列表list/元组tuple,还有最后一种比较重要的数据类型也需要介绍介绍,那就是python字典,俗称:dict. python中的字典可与字符串/列表/元组不同,因为 ...

  3. Python 字典 dict() 函数

    描述 Python 字典 dict() 函数用于创建一个新的字典,用法与 Pyhon 字典 update() 方法相似. 语法 dict() 函数函数语法: dict(key/value) 参数说明: ...

  4. 'dict_values' object does not support indexing, Python字典dict中由value查key

    Python字典dict中由value查key 众所周知,字典dict最大的好处就是查找或插入的速度极快,并且不想列表list一样,随着key的增加越来越复杂.但是dict需要占用较大的内存空间,换句 ...

  5. Python字典(dict)使用技巧

    字典dict是Python中使用频率非常高的数据结构,关于它的使用,也有许多的小技巧,掌握这些小技巧会让你高效地的使用dict,也会让你的代码更简洁. 1.默认值 假设name_for_userid存 ...

  6. Python — 字典dict 和 集合set

    字典dict : dict和set的key都是不可变对象 对于不变对象来说,调用对象自身的任意方法,也不会改变对象自身的内容.相反,这些方法会创建新的对象并返回,这样,就保证了不可变对象本身永远是不可 ...

  7. python 字典(dict)按键和值排序

    python 字典(dict)的特点就是无序的,按照键(key)来提取相应值(value),如果我们需要字典按值排序的话,那可以用下面的方法来进行: 1 下面的是按照value的值从大到小的顺序来排序 ...

  8. python 字典dict和列表list的读取速度问题, range合并

    python 字典和列表的读取速度问题 最近在进行基因组数据处理的时候,需要读取较大数据(2.7G)存入字典中,然后对被处理数据进行字典key值的匹配,在被处理文件中每次读取一行进行处理后查找是否在字 ...

  9. Python 字典dict 集合set

    字典dict Python内置字典,通过key-value进行存储,字典是无序的,拓展hash names = ['Michael', 'Bob', 'Tracy'] scores = [95, 75 ...

随机推荐

  1. arcgis for js 根据多边形自动缩放

    交代背景:多边形已经渲染在图层上,然后根据多边形自动缩放值合适的大小: 思路:获取图层信息,获取图层中的几何信息,获取图形范围信息,在地图上设置范围:(下面的方法有封装)记一下思路就好 var pol ...

  2. html中div标签怎么用?

    div现在一般网页的布局都是使用的div+css来布局,div的话,就是通过. <div> <div><p></p></div> </ ...

  3. 用Python实现一个词频统计(词云+图)

    第一步:首先需要安装工具python 第二步:在电脑cmd后台下载安装如下工具: (有一些是安装好python电脑自带有哦) 有一些会出现一种情况就是安装不了词云展示库 有下面解决方法,需看请复制链接 ...

  4. Java延时器

    package listener; import java.util.Timer; import java.util.TimerTask; public class Timeer { /** * sc ...

  5. sublime 使用链接

    链接  :http://www.cnblogs.com/gaosheng-221/p/6108033.html https://www.zhihu.com/question/24896283 http ...

  6. 编译原理 #03# 龙书中缀转后缀JS实现版

    // 来自龙书第2章2.5小节-简单表达式的翻译器 笔记 既然是语法制导翻译(Syntax-directed translation),那么最重要的东西当然是描述该语言语法的文法,以下为中缀表达式文法 ...

  7. Java锁与CAS

    一.加锁与无锁CAS 在谈论无锁概念时,总会关联起乐观派与悲观派,对于乐观派而言,他们认为事情总会往好的方向发展,总是认为坏的情况发生的概率特别小,可以无所顾忌地做事,但对于悲观派而已,他们总会认为发 ...

  8. sql*loader以及oracle外部表加载Date类型列

    Oracle sqlldr LOAD DATAINFILE *INTO TABLE testFIELDS TERMINATED BY X'9'TRAILING NULLCOLS(    c2 &quo ...

  9. 自制操作系统Antz(8)——实现内核 (中) 扩展内核

    Antz系统更新地址: https://www.cnblogs.com/LexMoon/category/1262287.html 在前几天的任务中,我们已经简单实现了MBR,直接操作显示器和硬盘操作 ...

  10. CSc 352 (Spring 2019): Assignment

    CSc 352 (Spring 2019): Assignment 11Due Date: 11:59PM Wed, May 1The purpose of this assignment is to ...