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;前沿科学突破能帮助我们做好准备拥抱未来…

pythongui管理系统项目_Python实现GUI学生信息管理系统

本文实例为大家分享了Python实现GUI学生信息管理系统的具体代码&#xff0c;供大家参考&#xff0c;具体内容如下项目环境&#xff1a;软件环境:OS:RedHat6.3Lib:PygtkLanguage:PythonSupport tool:Glade3项目简述&#xff1a;①Glade3设计用户的登录窗口&#xff0c;功能主窗口…

mysql8 修改加密方式_mysql8修改密码加密方式

mysql8用navicat可视化连接会报错加密方式错误&#xff0c;想要连接mysql8有两种方式1&#xff1a;安装MySQL8客户端2&#xff1a;修改MySQL8的密码加密方式我采用的是第二种&#xff0c;因为服务器上是MySQL8&#xff0c;而我本地是MySQL5&#xff0c;不想在装一个MySQL8&…

Python 操作Excel文件

https://blog.csdn.net/weixin_36279318/article/details/79151225转载于:https://www.cnblogs.com/wu-chao/p/8689120.html

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

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

python童年_300行Python代码实现俄罗斯方块,致敬逝去的童年

原标题&#xff1a;300行Python代码实现俄罗斯方块&#xff0c;致敬逝去的童年本文代码基于 python3.6 和 pygame1.9.4。俄罗斯方块是儿时最经典的游戏之一&#xff0c;刚开始接触 pygame 的时候就想写一个俄罗斯方块。但是想到旋转&#xff0c;停靠&#xff0c;消除等操作&…

安装织梦系统

织梦系统安装 步骤 1 mkdir /datayum -y install httpd*yum -y install mysql-community-release-el7-5.noarch.rpm wget http://repo.mysql.com/mysql-community-release-el7-5.noarch.rpm yum -y install mysql-community-release-el7-5.noarch.rpmyum install mysql-servers…

把 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;数据库必然会崩溃&…

jquery显示和隐藏元素

1、$(#id).show()/$(#id).hide()/$(#id).toggle() 2、$(#id).css(display,none)/$(#id).css(display,block) 3、$("#id")[0].style.display none; 转载于:https://www.cnblogs.com/shengulong/p/8693504.html

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

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

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

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

python的神经网络编程_Python神经网络编程 第二章 使用Python进行DIY

使用神经网络识别手写数字&#xff1a;import numpy# scipy.special for the sigmoid function expit()&#xff0c;即S函数import scipy.special# library for plotting arraysimport matplotlib.pyplot# ensure the plots are inside this notebook, not an external window%…

使用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大会的…

python安装失败无法访问_错误:由于环境错误而无法安装包错误:[WinError 5]访问被拒绝:...

我试图使用python -m pip install opencv-python -U pip --user将opencv python安装到windows10中的visualstudio代码中&#xff0c;但总是收到错误。希望有人能帮我改正错误。在我尝试了不同的建议&#xff0c;比如将--user放在命令行的末尾PS C:\Users\user\Desktop\sample&g…

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

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

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

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