映射和集合类型

字典的 增删改查

aDict = {1:'a', 2:'b'}
del aDict[1] ----key,value,索引
aDict[3] = 'c'
del aDict
print aDict[3] --NameError

类型操作符

1.标准
< <= > >= == !=

2.映射
键查找操作符:[]
键成员关系操作符: in not in

内建函数、工厂函数

1.标准类型
type() 、str()、cmp()

2.映射类型相关
dict()、len()、hash()

3.映射内建方法
dict.keys()/dict.values() 返回字典中键/(或)值的列表
dict.clear()
dict.fromkeys(seq,val = None) 创建一个新字典,key 对应seq值,value 都默认为None(未指定Val的话)
dict.get(key,default=None)
dict.has_key(key) 判断key 是否存在,基本被in not in 取代
dict.items() 返回一个字典 键-值 对形式的列表
dict.iteritems() 返回一个迭代子,也就是items的一个元素
dict.pop()
dict1.update(dict2) 把字典2添加到字典1中

字典的键

1.不允许一个键对应多个值

>>> aDict = {1:2,1:3,2:5}
>>> aDict
{1: 3, 2: 5}

Python从左到右检查键值对,1:2 会被覆盖

2.键必须是可hash
数字1.0 == 1所以是一个key值,只能存在一个,但为什么1:3->1.0:3?

>>> 1.0 == 1
True
>>> a = {1.0:2,1:3,2:5}
>>> a
{1.0: 3, 2: 5}

为什么要求可hash?
dict存储的时候会对键做hash处理,然后根据hash后的值来计算存储位置。如果键是可变的,hash就会得到不同的值。
但,如果键是可变的,却实现了hash()方法,返回一个整数,也可以作为字典的键

集合类型

可变集合:set
不可变集合:frozenset

>>> b = set(12345567)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: 'int' object is not iterable
>>> a = set('adcadcyuio')
>>> a
set(['a', 'c', 'd', 'i', 'o', 'u', 'y'])

set(集合) 只可通过工厂函数 set() /frozenset() 创建
访问:遍历查看,或者通过检查某项是否存在 in 。
更新:a.add('z')
删除:del a

<b>集合类型操作符</b>
1.标准
成员关系:in not in ,
集合等价/不等价: == !=
子集/超集:< <= > >=

2.集合类型操作符 (所有)

  • 联合 |
  • 交集 &
  • 差补 -
  • 对称差分/异或 ^ (XOR)

3.集合类型操作符(可变)

  • Update |=
>>> s = set('cheeseshop')
>>> u = frozenset(s)
>>> s |= set('pypi')
>>> s
set(['c', 'e', 'i', 'h', 'o', 'p', 's', 'y'])
  • Retention/Intersection Update &=
>>> s = set(u)
>>> s &= set('shop')
>>> s
set(['h', 's', 'o', 'p'])
  • Difference Update -=
>>> s = set(u)
>>> s -= set('shop')
>>> s
set(['c', 'e'])
  • Symmetric Difference Update ^=
>>> s = set(u)
>>> t = frozenset('bookshop')
>>> s ^= t
>>> s
set(['c', 'b', 'e', 'k'])

集合类型内建方法

  • len()、set()、frozenset()
  • 以及操作符对应的方法
  • s.add()/s.remove()/s.pop()/s.clear()
  • s.discard(obj) 丢弃操作,remove()的友好版本,如果s存在Obj,从s中删除
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 151,688评论 1 330
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 64,559评论 1 273
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 101,749评论 0 226
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 42,581评论 0 191
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 50,741评论 3 271
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 39,684评论 1 192
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,122评论 2 292
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 29,847评论 0 182
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 33,441评论 0 228
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 29,939评论 2 232
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 31,333评论 1 242
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 27,783评论 2 236
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 32,275评论 3 220
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 25,830评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,444评论 0 180
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 34,553评论 2 249
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 34,618评论 2 249

推荐阅读更多精彩内容