python基础知识入门2

字典(dictionary)

字典在某些语言中可能称为 联合内存 (associative memories) 或 联合数组 (associative arrays)。序列是以连续的整数为索引,与此不同的是,字典以"关键字"为索引,关键字可以是任意不可变类型,通常用字符串或数值。如果元组中只包含字符串和数字,它可以作为关键字,如果它直接或间接地包含了可变对象,就不能当做关键字。不能用列表做关键字,因为列表可以用索引、切割或者 append() 和 extend() 等方法改变。

字典是无序的键:值对 (key:value 对)集合,键必须是互不相同的(在同一个字典之内)。使用大括号创建一个空的字典:{}。初始化列表时,在大括号内放置一组逗号分隔的键:值对,这也是字典输出的方式。

字典的主要操作是依据键来存储和取值。也可以用 del 来删除键:值对(key:value),从一个不存在的键中取值会导致错误。

常见字典操作方法

D.clear()删除字典内所有元素

D.copy()返回一个字典的复制

D.fromkeys(seq,val)创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值

D.get(key, default=None)返回指定键的值,如果值不在字典中返回default值

D.has_key(key)如果键在字典dict里返回true,否则返回false

D.items()以列表返回可遍历的(键, 值) 元组数组

D.keys()以列表返回一个字典所有的键

D.setdefault(key, default=None)和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

D.update(dict2)把字典dict2的键/值对更新到dict里

D.values()以列表返回字典中的所有值

D.pop(key)删除一个键并返回它的值,类似于列表的pop,只不过删除的是一个键不是一个可选的位置

del D[key]删除键

D[key] = 42新增或修改键


字典用法注意事项:

序列运算无效,字典元素间是没有顺序的概念

对新索引赋值会添加项

键不一定总是字符串


元祖(tuple)

tuple是另一种有序的数据类型,与list比较类似。主要不同的一点是tuple被创建后就不能对其进行修改。所以,tuple与list不同,没有append(),pop(),insert()这些方法可以使用。获取元素的方法和list是一样的,可以通过索引来访问(也是从0开始的),只不过不能赋值成为其他的元素。

因为tuple不可变,所以代码更安全。如果可以的话,我们尽量使用tuple代替list。

创造元组

定义一个空的tuple,使用():

只有1个元素的元组在进行定义的时候,需要加一个逗号,来消除歧义,否则定义的就不是一个元组而是元素本身:



Python 的元组数据类型包含更多的方法。

tup.index(x, [start, [stop]])) 返回元组中start到stop索引中第一个值为 x 的元素在整个列表中的索引。如果没有匹配的元素就会返回一个错误。

tup.count(x) 返回 x 在元组中出现的次数。

cmp(tuple1, tuple2) 比较元组中两个元素。

len(tuple) 计算元组元素个数。

max(tuple) 返回元组中元素最大值。

min(tuple) 返回元组中元素最小值。

tuple(seq) 将列表转换为元组。

元组不提供字符串、列表和字典中的方法。如果相对元组排序,通常先得将它转换为列表并使其成为一个可变对象,才能获得使用排序方法,或使用sorted内置方法。


集合(set)

与dict类似,set也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。创建一个set,需要提供一个list作为输入集合:


由于set是无序和无重复元素的集合,所以两个set可以坐数学意义上的交并集等操作


与dict一样,set同样不可以放入可变对象,因为无法判断两个可变对象是否相等,也就无法保证set内部不会有重复元素。所以把list放入set,会报错。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,891评论 18 139
  • 一、python 变量和数据类型 1.整数 Python可以处理任意大小的整数,当然包括负整数,在Python程序...
    绩重KF阅读 1,776评论 0 1
  • Python简介 Python历史 Python 是由 Guido van Rossum 在八十年代末和九十年代初...
    莫名其妙的一生阅读 1,072评论 0 2
  • 女善信:我们昨天下了一天的大雨,有楼水灾了,这么多年,我从小到大从来没看到过。我就觉得灾难来了,不知道该怎么办了。...
    印学师傅阅读 983评论 0 0
  • 最近在做及时通讯,选择了网易云通讯,但是在拍照的时候,提示"SD卡被拔出或存储空间不足,无法保存头像", 联系技术...
    那个阳光下奔跑的少年阅读 726评论 5 1