03、数据类型(02)

字典(dict)

字典是一种映射型的数据类型,每个元素成对出现,即key- value,每对元素key 和  value“:”冒号分开,元素之间用逗号隔开,整个字典包括子在{}中。

字典中的“key”必须是不可变类型,“value”则可以是任意类型,如果出现一个“key”被多个“value”赋值,那么值为最后一个被赋的值,字典是可变数据类型,并且是无序的。所有不可变的数据类型都可以作为字典中的key,例如数字,字符串,元祖。字典的基本操作包括 创建,增加,删除,修改,查找,遍历,更新,in  or  not in 等。

常用方法:

 1 get(k)                   返回key所对应的value
 2 setdefault(k, v)        如果ke有不存在,设置一个默认值v,并返回v                如果k存在,返回k所对应的value
 3 keys()                    获得所有keys
 4 values()            获得所有values
 5 iteritems()                  for i, j in d.iteritems():print(i,j)
 6 update()                          m.update(n)                 m,n都是dict
 7 pop(k)                   删除k:v对应的元素
 8 
 9 
10 zip(l1, l2)            高阶函数,dict(zip(l1, l2))  把l1和l2转换成
11 mm = dict(a=1,b=10,c=3,d=9)
12 print sorted(mm.iteritems(), key = lambda d:d[1], reverse = True)
13             
View Code

 

示例:

  1,创建

1 #用fromkeys创建一个字典
2 >>> dic = ["name","age","sex"]
3 >>> dict = dict.fromkeys(dic)#以序列dic中元素做字典的键,value为字典所有键对应的初始值
4 >>> dic
5 ['name', 'age', 'sex']#value对应值为None,不显示
6 >>> dict = dict.fromkeys(dic,"123")#设置默认值value为“123”
7 >>> dict
8 {'name': '123', 'age': '123', 'sex': '123'}
9 >>>
View Code

  2,增加,删除,修改,查找

 1 >>> info = {"name":"egon","age":18}
 2 >>> info["sex"]="male"#直接添加
 3 >>> info
 4 {'name': 'egon', 'age': 18, 'sex': 'male'}
 5 
 6 
 7 #这里的setdefault 如果key存在,返回已存在的值不修改,如不存在则创建,也可算作一种添加的方法吧
 8 >>> info.setdefault("hobby","girls")
 9 'girls'
10 >>> info
11 {'name': 'egon', 'age': 18, 'sex': 'male', 'hobby': 'girls'}
12 >>>info = {'name': 'egon', 'age': 18, 'sex': 'male', 'hobby': 'girls'}
13 >>> info.setdefault("age",20)
14 18
15 >>> info
16 {'name': 'egon', 'age': 18, 'sex': 'male', 'hobby': 'girls'}
17 >>>
18 
19 
20 
21 #指定删除pop(),返回对应的值,并把这个值从字典中移除。
22 >>> info={'name': 'egon', 'age': 18, 'sex': 'male', 'hobby': 'girls'}
23 >>> info.pop("hobby")
24 'girls'
25 >>> info
26 {'name': 'egon', 'age': 18, 'sex': 'male'}
27 >>>>>> info.popitem()#删除任意键值对,因为字典是无序的。
28 ('sex', 'male')
29 >>> info
30 {'name': 'egon', 'age': 18}
31 >>> info.popitem()
32 ('age', 18)
33 >>> info
34 {'name': 'egon'}
35 >>>
36 
37 
38 
39 #修改,直接修改
40 >>> info = {"name":"egon","age":18}
41 >>> info["age"]=20
42 >>> info
43 {'name': 'egon', 'age': 20}
44 >>>
45 
46 
47 
48 #查找
49 >>> info={'name': 'egon', 'age': 20}
50 >>> "name"in info#成员运算符判断,返回布尔值
51 True
52 >>> info.get("name")#get查找字典中的key,key不存在返回默认值“None”
53 'egon'
54 >>> info["name"]#直接查找,根据“key”
55 'egon'
56 >>>
View Code

  3,遍历(循环输出)

 1 dic = {"name":"alex","age":18,"sex":"male"}
 2 for key in dic.keys():
 3     print(key,end=" ")
 4 #  name age sex
 5 for value in dic.values():
 6     print(value,end=" ")
 7 #  alex 18 male
 8 for item in dic.items():
 9     print(item,end=" ")
10 #('name', 'alex') ('age', 18) ('sex', 'male')
View Code
 1 >>> info = {"name":"egon","age":18,"sex":"male"}
 2 >>> info.keys()#循环取key
 3 dict_keys(['name', 'age', 'sex'])
 4 >>> info.values()#循环取value
 5 dict_values(['egon', 18, 'male'])
 6 >>> info.items()#循环取键值对
 7 dict_items([('name', 'egon'), ('age', 18), ('sex', 'male')])
 8  len(dict)        #计算字典元素个数
 9  str(dict)        #输出字典可打印的字符串表示,数据类型会发生改变
10  dict.clear()     # 清空词典所有条目
11 >>> info = {"name":"alex"}#将字典info中的键值更新到dic
12 >>> dic = {"age":18}
13 >>> info.update(dic)
14 >>> info
15 {'name': 'alex', 'age': 18}
16 >>>
View Code

 

python  帮助函数

dir():用来查询一个类或者对象所有属性。

help():用来查询的说明文档。

type():查看变量的类型

len():返回对象(字符、列表、元组等)长度或项目个数

isinstance()   判断实例是否是这个类或者object是变量。

enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列,同时列出数据和数据下标,一般用在 for 循环当中。

示例:

 1 >>> dir(list)
 2 ['__add__', '__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__iadd__', '__imul__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__mul__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__reversed__', '__rmul__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'append', 'clear', 'copy', 'count', 'extend', 'index', 'insert', 'pop', 'remove', 'reverse', 'sort']
 3 >>> help(list.pop)
 4 Help on method_descriptor:
 5 
 6 pop(...)
 7     L.pop([index]) -> item -- remove and return item at index (default last).
 8     Raises IndexError if list is empty or index is out of range.
 9 
10 >>> type(list)
11 <class 'type'>
12 >>> type(list.pop)
13 <class 'method_descriptor'>
14 >>> 
View Code
1 >>>a = 2
2 >>> isinstance (a,int)
3 True
4 >>> isinstance (a,str)
5 False
6 >>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
7 True
View Code
 1 >>>seasons = ['Spring', 'Summer', 'Fall', 'Winter']
 2 >>> list(enumerate(seasons))
 3 [(0, 'Spring'), (1, 'Summer'), (2, 'Fall'), (3, 'Winter')]
 4 >>> list(enumerate(seasons, start=1))       # 小标从 1 开始
 5 [(1, 'Spring'), (2, 'Summer'), (3, 'Fall'), (4, 'Winter')]
 6 >>>seq = ['one', 'two', 'three']
 7 >>> for i, element in enumerate(seq):
 8 ...     print i, seq[i]
 9 ... 
10 0 one
11 1 two
12 2 three
View Code

 

强制类型转换函数:

str()   int()    list()   dict()   tuple()

列表构造函数:  

  •  range()方法返回的是一个list对象,它需要开辟专门的空间保存序列中所有的元素。
  • xrange() 方法返回的是xrange对象,它是一个序列对象,但并不保存序列中的元素。其实现方法与本文介绍的MyRange类型类似。

   因此,如果只对序列进行读操作,xrange方法效率较高;但是如果需要改变序列的元素,或者需要往序列增删元素,那只能通过range方法生成一个list对象。要生成很大的数字序列的时候,用xrange会比range性能优很多,因为不需要一上来就开辟一块很大的内存空间。

 1 >>> range(5) 
 2 [0, 1, 2, 3, 4] 
 3 >>> range(1,5) 
 4 [1, 2, 3, 4] 
 5 >>> range(0,6,2)
 6 [0, 2, 4]
 7 >>> xrange(5)
 8 xrange(5)
 9 >>> list(xrange(5))
10 [0, 1, 2, 3, 4]
11 >>> xrange(1,5)
12 xrange(1, 5)
13 >>> list(xrange(1,5))
14 [1, 2, 3, 4]
15 >>> xrange(0,6,2)
16 xrange(0, 6, 2)
17 >>> list(xrange(0,6,2))
18 [0, 2, 4]
View Code

 

字典列表返回函数

items()用于 返回一个字典的拷贝列表,占额外的内存。

  print dic.items() #[('a', 'hello'), ('c', 'you'), ('b', 'how')]

iteritems()用于返回本身字典列表操作后的迭代,不占用额外的内存。

  print dic.iteritems() #<dictionary-itemiterator object at 0x020E9A50>

1 for i in dic.iteritems():
2 
3   print i
4 
5 结果:('a', 'hello')
6 
7 ('c', 'you')
8 
9 ('b', 'how')
View Code

 

 

转载于:https://www.cnblogs.com/cjl463199284/p/8688579.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/486439.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

器官复刻、脑机接口、电子皮肤…这些前沿科学或改写人类未来

来源&#xff1a;MEMS“2020年&#xff0c;新冠疫情爆发&#xff0c;面对困境&#xff0c;我们采取的行动将很可能改写这个时代。” 11月7日&#xff0c;2020腾讯科学WE大会线上举行。腾讯首席探索官网大为在开场演讲中表示&#xff0c;前沿科学突破能帮助我们做好准备拥抱未来…

GPT-3:人工智能的新突破

来源&#xff1a;王宏琳科学网博客在过去几个月里&#xff0c;占据海外科技新闻头条主导地位的、人工智能领域最令人兴奋的新事物之一是GPT-3——OpenAI的新的文本生成程序&#xff0c;一种由神经网络驱动的语言模型&#xff0c;一个根据人类用户的提示自动生成文本的人工智能引…

把 mysql 整个加载进内存磁盘中_MySQL 缓冲池 是什么?

Mysql 中数据是要落盘的&#xff0c;这点大家都知道。读写磁盘速度是很慢的&#xff0c;尤其和内存比起来更是没的说。但是&#xff0c;我们平时在执行 SQL 时&#xff0c;无论写操作还是读操作都能很快得到结果&#xff0c;并没有预想中的那么慢。可能你会说我有索引啊&#x…

Cell重磅:记忆研究的突破进展!在诺奖成果基础上,用“全光学”组合来“操纵记忆”...

来源&#xff1a;brainnews这项发表在《细胞》杂志上的研究&#xff0c;解释了研究人员如何利用双光子钙成像和双光子光遗传学的“全光学”组合&#xff0c;同时读写小鼠“位置细胞”&#xff08;神经元的一种&#xff09;中的活动&#xff0c;而这种细胞可以在虚拟现实环境中进…

mysql like 多个条件_千万级MySQL数据库这样建索引可以让你的数据库飞起来.........

创建索引常用规则1、表的主键、外键必须有索引&#xff1b;2、数据量超过300的表应该有索引&#xff1b;3、经常与其他表进行连接的表&#xff0c;在连接字段上应该建立索引&#xff1b;4、经常出现在Where子句中的字段&#xff0c;特别是大表的字段&#xff0c;应该建立索引&a…

mysql主从配置访问_Mysql主从配置,实现读写分离

大型网站为了软解大量的并发访问&#xff0c;除了在网站实现分布式负载均衡&#xff0c;远远不够。到了数据业务层、数据访问层&#xff0c;如果还是传统的数据结构&#xff0c;或者只是单单靠一台服务器扛&#xff0c;如此多的数据库连接操作&#xff0c;数据库必然会崩溃&…

靠脑机接口“隔空探物”,大脑植入芯片可实现“心灵感应”

来源&#xff1a;脑极体1979年&#xff0c;在四川大足县的12岁农村少年唐雨突然具有了“耳朵识字”的神通。原本是当地的一件稀罕的谈资&#xff0c;结果后来引起了当地媒体的报道&#xff0c;后来又居然经过中国的权威科技期刊《自然杂志》的“确证”和香港《明报》&#xff0…

android app 适应不同大小屏幕_移动APP测试:Android屏幕适配问题二

设计选择性的布局和图片&#xff0c;替代资源的类型&#xff0c;取决于应用程序的需求。通常&#xff0c;应该使用尺寸和方向限定符提供选择性的布局资源&#xff0c;使用密度限定符提供选择性的图片资源。以下部分分别概括了该如何使用尺寸和密度限定符提供选择性的布局和图片…

使用node中的express解决vue-cli加载不到dev-server.js的问题

在使用vue开发过程中&#xff0c;难免需要去本地数据地址进行请求&#xff0c;而原版配置在dev-server.js中&#xff0c;新版vue-webpack-template已经删除dev-server.js&#xff0c;改用webpack.dev.conf.js代替&#xff0c;所以 配置本地访问在webpack.dev.conf.js里配置即可…

脑机接口:从基础科学到神经康复

本文转自公众号&#xff1a;脑机接口社区大家好 &#xff0c;我是米格尔尼科莱利斯&#xff0c;美国杜克大学神经生物学、神经学和生物医学工程教授。今天我将为大家介绍脑机接口和这一技术从基础科学到应用于神经康复的研究历程。首先&#xff0c;我要感谢2020腾讯科学WE大会的…

从Airbnb的发展历程和网易云的大起大落看IT行业创新(第5周课后作业)

我想先根据个人看法回答“创新是什么&#xff1f;”这个空泛的问题。创新是面对当下的资源条件限制创造出能够满足动态需求或解决动态发展中的问题的新策略。这种实用化定义在大部分邻域都勉强能让定义者自圆其说&#xff0c;对于IT行业算是比较贴切&#xff0c;但是当我们把创…

c++ map 自定义排序_Java学习笔记:Map集合介绍

在介绍它之前先来看看再API文档中是如何介绍它的&#xff0c;看图片&#xff1a;由图片可以看出&#xff0c;Map属于双列集合&#xff0c;每次可以添加一对数据&#xff0c;并且这两个数据具有映射关系。单列集合和双列集合区别一、Map继承体系1.HashMap&#xff1a;存储数据采…

《智能网联汽车技术路线图 2.0》重磅发布

全文共计3644字&#xff0c;预计阅读时间8分钟来源 | 国汽智联&#xff08;转载请注明来源&#xff09;编辑 | 蒲蒲11月11日&#xff0c;由北京市人民政府、工业和信息化部、公安部、交通运输部、中国科学技术协会共同主办的2020世界智能网联汽车大会召开。大会现场&#xff0c…

毕设ssm商城系统_ssm商城系统(爱淘淘购物)项目源码

ssm商城系统(爱淘淘购物)项目演示本系统采用SSM架构来搭建。服务器&#xff1a;tomcat7java虚拟机&#xff1a;jdk1.7数据库&#xff1a;mysql前端&#xff1a;Vue Bootstrap管理员用户&#xff1a;root root普通用户&#xff1a;jack 123访问路径&#xff1a;http://localho…

科学就是要勇于承认错误:十大错误科学结论盘点

来源&#xff1a; 学术头条人们不会迷信权威&#xff0c;但是大部分会相信“科学”。如何科学地饮食&#xff1f;如何科学地工作&#xff1f;如何科学地休息&#xff1f;“科学”两个字成了人们确认自己正确生活的最大保障。但如果“科学”不正确&#xff0c;那又会怎样呢&…

怎么改变表单option标签直接字体大小_不起眼却非常重要的表单交互

表单是什么&#xff1f;是用户和app之间的对话。作为人机交互的一种重要入口&#xff0c;一个好的数据输入方式是很有必要去考虑的。但现实中&#xff0c;我们大多设计师和产品经理前期设计的时候就没有太多的考虑&#xff0c;到最后开发的时候就会发现问题&#xff0c;然后就草…

mysql-front特点_Navicat for MySQL与MySQL-Front比较 [图文]

MySQL GUI工具很多&#xff0c;本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)MySQL-FrontMySQL-FronMySQL GUI工具很多&#xff0c;本文就常用的Navicat for MySQL与MySQL-Front的特色功能做一个详细介绍与比较。(一)MySQL-FrontMySQL-Fron…

这是关于物理学的最强科普

“唯有宇宙和人类的愚蠢是永恒的”文章来源&#xff1a;撕蛋公众号这是关于物理学的最强科普&#xff08;完整版&#xff09; 本文素材主要摘录自加来道雄的《Hypersapce》和丘成桐的《The Shape of Inner Space》。凭籍本文&#xff0c;回顾一下两百年来的科学史&#xff0c;看…

pip 不是内部或外部命令 也不是可运行的程序_QT之程序打包发布

1.引言QT开发完之后&#xff0c;如果直接把exe文件发给别人&#xff0c;是没法直接用的&#xff0c;因为会提示缺少很多库&#xff0c;一种方法是把这些库拷贝出来&#xff0c;一起发过去&#xff0c;但是这样不方便且文件很大&#xff0c;所以需要一种文件打包发布的方法。2.环…

华为汪涛:定义5.5G,构建美好智能世界

来源&#xff1a;华为以下是汪涛演讲全文&#xff1a;尊敬的各位来宾&#xff0c;大家早上好&#xff01;一年来&#xff0c;华为5G解决方案被更多的客户所选择&#xff0c;为世界各地社会经济的可持续发展创造价值&#xff0c;这些都离不开全球客户对我们的关心和支持&#xf…