python内置数据结构之dict
字典是什么
key-value对的集合.可变的、无序、key不重复的序列.key只能是唯一标识,value不限定,只要是合法的value.key和value一一对应.
字典的定义初始化
空字典定义
dict() 和 {}例;d = dict() 或 d = {}
字典定义初始化
- 1dict(**kwargs) 使用name=value的格式,定义字典例:d = dict(a=1,b=2,c=3)注意: 数字无法用作key,因为数字开头的名称不符合标识符的规定例:d = dict(a=3,b=4,c=5,1='a')File "<stdin>", line 1SyntaxError: keyword can't be an expression - 2{key:value,...}例: d = {'a':[],'b':()} - 3dict(iterable[,default])可迭代对象的元素必须为二元结构例: d = dict(((1,2),(3,4)))d = dict((['a','b'],['c','d'])) - 4dict(mapping,**kwargs)mapping代表另一个字典,使用一次字典构建一个新字典例:>>> d1 = {'a':1}>>> d3 = dict(d1)>>> d3{'a': 1}>>> id(d1)139663213088904>>> id(d3)139663213096456 - 5 类方法dict.fromkeys(iterable[,value])iterable对应创建的为key,缺省value时为None.例:d = dict.fromkeys(range(5))d = dict.fromkeys(range(5),0)
字典元素的查
-1 d[k]根据key查找value,找到key返回value找不到抛出KeyError异常 -2 d.get(key[,default])根据key查找value找到key返回value找不到返回default,default默认为None例:>>>d = {1 :'a',2 :'b'}>>> d.get(1)'a'>>> d.get(3)>>> d.get(3,'not num')'not num' - 3setdefault(key[,default])key不存在时,创建key,default对(即value),返回defaultdefault默认为Nonekey存在时,返回key的value例:>>> d{1: 'a', 2: 'b'}>>> d.setdefault(1,'c')'a'>>> d.setdefault(3,'c')'c'>>> d{1: 'a', 2: 'b', 3: 'c'}
字典的增加和修改
-1 d[k] = vkey存在时,修改其值为vkey不存在时,添加此k,v对例:>>> d{'a': 1, 'b': 2}>>> d['a'] = 2>>> d{'a': 2, 'b': 2}>>> d['c'] = 2>>> d{'a': 2, 'b': 2, 'c': 2} -2dict.update([other]) --> Noneother: 可迭代对象或另一个字典将other内容更新至此字典key存在则修改为新值key不存在则添加就地修改例:d.update(enumerate(range(10)))d.update({'red':3})
字典的删除
- 1pop(k[,d]) --> v删除指定key并返回对应的值如果key不存在,返回d,否则KeyError异常- 2popitem() 随机删除某一k,v对,返回k,v二元组如果字典没有元素,则抛出KeyError异常 - 3clear() --> None清空所有元素,就地修改 注意: for循环的可迭代对象不能在循环内修改.如果要使用,建议用while循环.
字典的遍历
- 1
遍历key
for k in d:
print(k)
for k in d.keys():
print(k)
- 2
遍历value
for k in d.values():
print(k)
for k in d:
print(d[k])
for k in d:
print(d.get(k))
- 3
遍历k,v对
for k,v in dict:
print(k,v)
for item in d.items:
print(item)
总结:
python3中,keys、values、items方法返回一个类似生成器的可迭代对象,不会直接返回整个字典元素.
python2中,上述的方法会返回一个新列表,占据新的内存空间.因此建议使用iterkeys、itervalues、iteritems版本,返回一个迭代器,而不是整个列表字典的key
key只能是可哈希的元素,而凡是可变的都不能被哈希.不可哈希对象: list、bytearrayset跟dict的关系:set可以理解为是一个key,value对,只不过其value不是我们所关心的.因此可以理解set的去重,实际是key的唯一性原因.所以dict也有去重作用.
转载于:https://blog.51cto.com/12074120/1970703
相关文章:

Google发布三大新品,Pixel手机价格直逼苹果
整理 | 费棋出品 | AI科技大本营北京时间 10 月 9 日晚间,Google 在秋季发布会上推出了 Pixel 手机、平板电脑 Pixel Slate 以及智能音箱 Home Hub三大新品。最新旗舰手机 Pixel 3 和 Pixel 3 XL 如约而至,但由于产品信息在发布前就已被泄露,…
github上好的c语言项目,2019 github热门项目
zdogzdog是一款js 3D引擎,zdog不同于其他的js 3D引擎的地方在于所有的API引用全部都是2D绘图,所以zdog项目才会简单,但是高效。一起来做马里奥吧!craftcraft是Mojang工作室在github上的开源项目,craft完全采用c语言实现…

性能测试注意事项
作者:不详 性能测试注意事项: 1.服务器端和客户端一定要同一个局域网内,否则网络因素会成为性能测试的瓶颈。 2.在性能测试脚本中要注意检查点的设置,否则都不清楚脚本是否真的成功执行操作。 3.…

【笔记】PIL 中的 Image 模块
Image 模块提供了一个同名类(Image),也提供了一些工厂函数,包括从文件中载入图片和创建新图片。例如,以下的脚本先载入一幅图片,将它旋转 45 度角,并显示出来: 1 >>>from P…

c语言万年历的设计报告,万年历设计报告
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼#include#includechar* month_str[]{"January","February","March","April","May","June","July","August","September","Octob…

SQL Server的数据库开发工具
偶然的机会看到这个工具,看来比Oracle的PL/SQL Dev 有过之而无不及呀。而且是免费的哟这个工具看起来确实很牛呀,只是我还没有试用过。SQL Prompt 为Microsoft SQL Server 编辑器提供一种智能感知形式的自动完成功能,当你正在写你自己的SQL命…
国内首个深度学习工程师认证标准发布
10月10日,深度学习工程师认证发布会暨人工智能人才发展论坛在京召开。会上,基于中国软件行业协会发布的国内AI领域第一个专业技术人才培养标准——《深度学习工程师能力评估标准》(以下称《标准》),深度学习技术及应用…

对于未来的多种可能,这几位中国科学家想说
注:本文来自“ 2018 AI开发者大会”媒体合作伙伴深科技十年前,人工智能还被叫做模式识别,中本聪也才刚刚提出区块链概念。现如今,人类发现了石墨烯的新制法,利用 CRISPR-Cas9 战胜了过去不可治愈的病症,甚至…

android 虚方法,尝试在空对象引用上调用虚方法’android.view.View android.view.View.getRootView()’...
我收到这个错误,“Attempt to invoke virtual method ‘android.view.Viewandroid.view.View.getRootView()’ on a null object reference”这是我的代码.black.setOnClickListener(new View.OnClickListener() {Overridepublic void onClick(View v) {View bView findViewBy…

一个男人和一个女人的故事
一个男人和一个女人的故事,开始还有点意思,后来就有想打人的冲动.his_and_her_circumstance, 彼男彼女的事情. 还是一个男人和一个女人的故事简单. 曾经看到过介绍, 夸得天花乱缀. 我就下了,又花了一个星期的耐心终于看完了. 开始看,以为又是搞笑的青春校园故事. 后来越看越没…

Filezilla 二进制上传设定
大部份人都用這套吧,免費而且還不斷更新中。由於有些php源碼是有zend壓縮,沒用二進制傳送,會有問題,所以上傳模式最好是直接設定為二進制,如下圖:另外我建議最好也設定一次只傳一個檔,雖然慢了些…

android wear无法启用,android-wear – 无法创建Android虚拟设备,“没有为此目标安装系统映像”...
为了创建一个Android穿戴式模拟器,你需要按照下面的说明,1.如果您的Android SDK工具版本低于22.6,您必须更新2.在Android 4.4.2下,选择Android Wear ARM EABI v7a系统映像并安装它。3.Brolow Extras,确保您拥有最新版本…

全球物联网产业规模不断扩大 中国市场前景分析
近年来,物联网在行业领域的应用逐步深化。车辆远程信息服务管理、车联网、智能电网是近年来发展较快的应用领域,该等领域是物联网中率先形成完整产业链和内在驱动力的应用。拥有成熟产业链的车联网行业将率先发力,引领物联网行业的发展方向。…
月薪30k~50k,这个领域的人才正在被疯抢!
参加 2018 AI开发者大会,请扫描海报二维码 2016 年 IT 业年平均工资破 12 万元,首次超过金融业,排名各行业门类首位。2017 年,IT 业再次高居榜首,并一举超过 13 万元。挣得多花的少的程序员已经成为相亲市场上的香饽饽…

ADO.NET并发性
ADO.NET已经得到了广泛的应用,对于初学者搞懂基本的概念很重要,不如就写点基础的吧。首先介绍一下什么叫“并发”:我们在使用多用户数据库时常常会碰到数据更新失败、删除失等情况,如果有多个用户且同时访问一个数据库则当他们的事…

[JAVA] java仿windows 字体设置选项卡
想用java做一个像windows里一样的txt编辑软件,涉及到字体设置选项卡,在网上找了很久都没找到,就生气啦自己写一个,现在贴这里分享一下,下次再遇到这样的问题就不用自己亲自打代码啦! 1 package 实验;2 3 im…

android小球移动代码,Android自定义圆形View实现小球跟随手指移动效果
本文实例为大家分享了Android实现小球跟随手指移动效果的具体代码,供大家参考,具体内容如下一. 需求功能手指在屏幕上滑动,红色的小球始终跟随手指移动。实现的思路:1)自定义View,在onDraw中画圆作为小球;2…

从试用到使用:计算机视觉产业新一轮发展的起步年
参加 2018 AI开发者大会,请点击官网报名 CSDN 出品的《2018-2019 中国人工智能产业路线图》V2.0 版即将重磅面世! V1.0 版发布以来,我们有幸得到了诸多读者朋友及行业专家的鼎力支持,在此表示由衷感谢。此次 V2.0 版路线图将进行新…

被人恨,但感觉不错!
做销售四年多了,从来没有碰到目前遇到的情况,心中的郁闷,真的没办法排除,干脆写到BLOG上,也算发泄,也算记录!早两三年,一直在软件和IT服务行业打混,接触的多是企业老总&a…
android联动动画,利用 CollapsingToolbarLayout 完成联动的动画效果
最近项目中需要实现个动画效果,研究了下这里做下简单的分享.效果图如下:示例.gif最初的想法是自己去利用 Android 的嵌套滚动机制,去实现上面的嵌套滚动效果.但最后为了开发效率直接利用了 CollapsingToolbarLayout 和 CoordinatorLayout 的效果.实现效果的原理十分简单,监听 C…
波士顿动力机器人逆天,人类已无法阻挡它的三级跳!
一直刷新大众认知的波士顿动力又秀出了新花样。 如今,波士顿动力的 Atlas 人形机器人可以玩跑酷了!在该公司发布的一段最新视频中,Atlas 展示了它可以单脚越过障碍物、跳到交错的箱子上,毫不费力! 该公司表示ÿ…

自制程序清除系统垃圾文件
电脑用久了,系统分区内肯定会有很多垃圾文件,占据着大量空间,严重影响系统运行速度,这个程序能自动清理电脑里的垃圾而不会破坏系统。1. 在桌面上点鼠标右键,新建一个文本文件,把下面的字复制进去ÿ…

pylons中常用的paster命令
paster create -t pylons helloworld 创建一个以pylons为模板的项目,项目名字是helloworldpaster create --list-templates 显示当前的pylons中有多少可以使用的模板 paster serve --reaload development.ini 最常用的命令了,启动调式程序的时候都…

What-If 工具:无需写代码,即可测试机器学习模型
文 / Google AI 软件工程师 James Wexler 构建有效的机器学习 (ML) 系统需要提出许多问题。仅仅训练一个模型,然后放任不管,是远远不够的。而优秀的开发者就像侦探一样,总是不断探索,试图更好地理解自己的模型:数据点的…

linux如何安装neo4j,Ubuntu16.04 如何安装neo4j数据库
什么是neo4j数据库?neo4j数据库是图数据库的一种,属于nosql的一种,常见的nosql数据库还有redis、memcached、mongDB等,不同于传统的关系型数据库,nosql数据也有其独特之处,例如图数据库,在处理对…
MSI文件制作全过程
MSI文件制作全过程 这两天学习制作MSI文件用于组策略发布,试了一些做.MSI文件的软件包括Win2000Server光盘带的WinINSTALL LE,实际做出来的效果都不好。最后找到InstallShield AdminStudio5,用它做的MSI文件在组策略中成功发布。下面就以“石…

C语言 带比较器的归并排序
1 #include <stdio.h>2 #include <stdlib.h>3 4 typedef int DataType;5 6 //比较器7 int mycmp(const void * a, const void *b); 8 9 //int (*compar)(const void *, const void *) 函数指针 10 void Sort(DataType * arr, int from, int to, int (*compar)(cons…

iphone adb android,通过ADB获取Android手机信息
1、获取手机体系信息(CPU,厂商名称等)adbshell”cat/system/build.prop|grep”product””2、获取手机体系版别adbshellgetpropro.build.version.release3、获取手机体系api版别adbshellgetpropro.build.version.sdk4、获取手机设备类型adb-dshellgetpropro.product…

浩方平台CS流量评估
因为需要做了一次这样的简单的流量评估,就顺便拿出来给大家共享一下转载于:https://blog.51cto.com/niujh/10164

深度学习深陷可解释性泥淖,而这个研究领域正逐步焕发生机
只讲技术,拒绝空谈!2018 AI开发者大会精彩议程曝光》 福利 11月2日前购票,立享7折优惠!更有学生专享福利!扫码报名↓↓↓