Python字典和集合

1 字典基础操作

1.1 创建字典

  • 通过{}操作符创建字典
    aDict = {'name':'ke', 'age':25}
  • 通过dict()工厂方法创建字典
    bDict = dict((['name', 'ke'], ['age', 25]))
  • 通过fromkeys()创建具有相同值得默认字典
    cDict = {}.fromkeys(('ke', 'alice'), 23)

1.2 访问字典

  • 字典是映射类型,意味着它没有下标,访问字典中的值需要使用相应的值
>>> for eachKey in aDict:
...     print 'key=%s, value=%s' % (eachKey, aDict[eachKey])
...
key=age, value=25
key=name, value=ke
>>> print '%(name)s' % aDict
ke

1.3 更新字典

  • 通过键更新字典
    • 如果字典中有该键,则更新相关值
      -如果字典中没有该键,则向字典中添加新值
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> aDict['age'] = 22
>>> print aDict
{'age': 22, 'name': 'ke'}
>>> aDict['email']='allenouyangke@icloud.com'
>>> print aDict
{'age': 22, 'name': 'ke', 'email': 'allenouyangke@icloud.com'}
>>>

1.4 删除字典

  • 通过del可以删除字典中的元素或整个字典
  • 使用内部方法clear()可以清空字典
  • 使用pop()方法可以“弹出”字典中的元素
>>> del aDict['email']
>>> print aDict
{'age': 22, 'name': 'ke'}
>>> aDict.pop('age')
22
>>> print aDict
{'name': 'ke'}
>>> aDict.clear()
>>> print aDict
{}

1.5 字典操作符

  • 使用字典键查找操作符号[],查找键所对应的值
  • 使用innot in判断键是否存在于字典中
>>> aDict = {'name': 'ke', 'age': 25}
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> 'name' in aDict
True
>>> 'ke' in aDict
False
>>>

2 字典相关函数

2.1 作用于字典的函数

  • len():返回字典中元素的数目
  • hash():本身不是为字典设计的,但是可以判断某个对象是否可以作为字典的键
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> len(aDict)
2
>>> hash(3)
3
>>> hash([])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: unhashable type: 'list'
>>>

2.2 字典内建方法

  • dict.copy():返回字典(浅复制)的一个副本
>>> print aDict
{'age': 25, 'name': 'ke'}
>>> bDict = aDict.copy()
>>> print bDict
{'age': 25, 'name': 'ke'}
>>> bDict['name'] = 'yuyu'
>>> print bDict
{'age': 25, 'name': 'yuyu'}
>>> print aDict
{'age': 25, 'name': 'ke'}
>>>
  • dict.get(key, default=None):对字典dict中的键key,返回它对应的值value,如果字典中不存在此键,则返回default的值
>>> print aDict
{'age': 25, 'name': 'KE'}
>>> aDict.get('name', 'not found')
'KE'
>>> aDict.get('email', 'not found')
'not found'
>>>
  • dict.setdefault(key, default=None):如果字典中不存在key键,由dict[key]=default为它赋值
>>> print aDict
{'age': 25, 'name': 'KE'}
>>> aDict.setdefault('age', 20)
25
>>> aDict.setdefault('iphone', 13570319584)
13570319584
>>> print aDict
{'age': 25, 'name': 'KE', 'iphone': 13570319584}
>>>
  • dict.items():返回一个包含字典中(键,值)对元组的列表
  • dict.keys():返回一个包含字典中键的列表
  • dict.values():返回一个包含字典中所有值得列表
  • dict.update(dict2):将字典dict2的键-值对添加到字典dict

3 集合

3.1 集合类型

  • 数学上,把set称作由不同的元素组成的集合,集合(set)的成员通常被称作集合元素
  • 结合对象是一组无序排列的可哈希的值
  • 集合有两种类型:
    • 可变集合set
    • 不可变集合frozenset
>>> s1 = set('hello')
>>> s2 = frozenset('hello2')
>>> s1
set(['h', 'e', 'l', 'o'])
>>> s2
frozenset(['h', '2', 'e', 'l', 'o'])
>>>

3.2 集合类型操作符

  • 集合支持用innot in操作符检查成员
  • 能够通过len()检查集合大小
  • 能够使用for迭代集合成员
  • 不能进行切片,没有键
  • |:联合,取并值
  • &:交集
  • =:差补

3.3 集合内建方法

  • set.add():添加成员
  • set.update():批量添加成员
  • set.remove():移除成员
  • s.issubset(t):如果s是t的子集,则返回True,否则返回False
  • s.issuperset(t):如果t是s的超集,则返回True,否则返回False
  • s.union(t):返回一个新集合,该集合是s和t的并集
  • s.intersection(t):返回一个新集合,该集合是s和t的交集
  • s.difference(t):返回一个新集合,该集合是s的成员,但不是t的成员

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

推荐阅读更多精彩内容