Python学习(三)——字典、有序字典、集合
2017-07-27 18:42
645 查看
1、字典 dict
python中唯一的映射类型,用大括号{}界别;字典提供名称与对象之间的映射;使用键-值(key-value)存储,具有极快的查找速度。类似于哈系表的键值对.
键值可以是任意不可改变对象,如字符串、数字、元组,也可以是一系列用逗号分开的值,如d[1,2,3]=’xyz’。
dict内部存放的顺序和key放入的顺序没有关系
支持的操作有:
x=d[k] 通过键进行索引
d[k]=x 通过键进行赋值
del d[k] 通过键删除一项
k in d 检测某个键是否存在
len(d) 字典中的项数
①索引
查询‘d’对应的数值:>>> d={'a':56,'b':78,'c':46,'d':89} >>> d['c'] 46
②添加键值
把数据放入dict中,除了初始化还可以通过key放入:>>> d={'a':56,'b':78,'c':46,'d':89} >>> d['a']=0 >>> d {'a': 0, 'c': 46, 'b': 78, 'd': 89} >>> d['e']=12 >>> d {'a': 0, 'c': 46, 'b': 78, 'e': 12, 'd': 89}
③删除键值
删除一个key,可以使用del d[x]或d.pop(‘x’):>>> d={'a': 0, 'c': 46, 'b': 78, 'e': 12, 'd': 89} >>> del d['c'] >>> d {'a': 0, 'b': 78, 'e': 12, 'd': 89} >>> d.pop('b') 78 >>> d {'a': 0, 'e': 12, 'd': 89}
④检测某个键是否存在
1)通过in判断key是否存在:>>> d={'a':1,'b':2,'c':3} >>> 'a' in d True >>> 'e' in d False
2)通过get()方法判断:
若key存在则返回1,若不存在则返回None(此时交互式命令行不显示结果),或自己指定value;
>>> d={'a':1,'b':2,'c':3} >>> d.get('a') 1 >>> d.get('e') >>> d.get('e',0) 0
⑤利用list()可获得字典关键字的列表:
>>> d={'a':1,'b':2,'c':3} >>> list(d) ['a', 'c', 'b']
利用items()与iteritems()将字典转换为列表
items()将字典中的所有项,以列表方式返回.dic = {'a':3, 'b':1, 'c':2} l = dic.items() print l
输出:
[('a', 3), ('c', 2), ('b', 1)]
iteritems()返回一个迭代器.
import operator dic = {'a':3, 'b':1, 'c':2} d = dic.iteritems() print d print type(d) print sorted(d, key=operator.itemgetter(1))
输出:
<dictionary-itemiterator object at 0x7f706a964578> <type 'dictionary-itemiterator'> [('b', 1), ('c', 2), ('a', 3)]
利用dic统计list内的数据个数:
vote = {} data = [2,0,1,0,1,1,'a',1,2,2,'a'] for i in data: vote[i] = vote.get(i, 0) + 1 print vote
输出:
{0: 2, 1: 4, 2: 3, 'a': 2}
2、有序字典
区别于字典内部存放的顺序和key放入的顺序没有关系,有序字典作为字典的子类,它的内部存放关系取决于和key放入的顺序.对比如下:
有序字典:
import collections dic0 = collections.OrderedDict() dic0[45] ='four' dic0[37] ='three' dic0[62] ='two' dic0[13] ='one' dic0[20] ='zero' for key, value in dic0.items(): print key, value
输出:
45 four 37 three 62 two 13 one 20 zero
字典:
dic1 ={45:'four', 37:'three', 62:'two', 13:'one', 20:'zero'} for key, value in dic1.items(): print key, value
输出为:
20 zero 13 one 45 four 62 two 37 three
3、集合 set
集合用于包含一组无序的对象。集合中的元素不能重复,重复元素会被自动过滤。与dict相比set是一组key的集合但不存储value。①创建set:
>>> s=set('ashkjh') >>> s set(['a', 'h', 's', 'j', 'k']) >>> s=set([1,2,3,4,5]) >>> s set([1, 2, 3, 4, 5]) >>> s=set('12345') >>> s set(['1', '3', '2', '5', '4'])
②添加元素:
可以使用add()添加一项或使用update()添加多项(可以添加重复项,但无效果):>>> s=set([1,2,3]) >>> s set([1, 2, 3]) >>> s.add(4) >>> s set([1, 2, 3, 4]) >>> s.update([7,8,9]) >>> s set([1, 2, 3, 4, 7, 8, 9])
③删除元素:
通过remove(key)删除元素:>>> s=set([1,2,3]) >>> s set([1, 2, 3]) >>> s.remove(3) >>> s set([1, 2])
④集合操作:
支持并集、交集、差集、对称差集如,对集合s1、s2
B=s1 | s2 #并集
J=s1 & s2 #交集
C=s1 - s2 #差集(在s1中不在s2中的元素)
D=s1 ^ s2 #对称差集(在s1、s2中但不在二者的交集中的元素)
>>> s1=set(['1','2','x','y']) >>> s1 set(['1', 'x', '2', 'y']) >>> s2=set(['x','y','z','w']) >>> s2 set(['y', 'x', 'z', 'w']) >>> B=s1|s2 >>> B set(['1', '2', 'w', 'y', 'x', 'z']) >>> J=s1&s2 >>> J set(['y', 'x']) >>> C=s1-s2 >>> C set(['1', '2']) >>> D=s1^s2 >>> D set(['2', '1', 'z', 'w'])
相关文章推荐
- 【Python学习笔记】6.字典&集合
- 【Python】基础学习——列表(list),元祖(tuple),字典(dict),字符串(string),集合(set)
- Python学习笔记3-Python元组、数组、字典集合的操作
- Python学习——字典和集合
- Python学习笔记ucas(lecture2)数据结构(字符串、列表、元组、字典、集合)
- Python学习笔记3-Python元组、数组、字典集合的操作
- 【python学习笔记】Python数据结构(列表,元组,字典,集合)
- Python学习之路1 有序集合和无需集合
- 02-python学习笔记:字典dict和集合set
- Python3学习笔记【基础3--list,tuple,if条件判断,for/while循环,dict字典,set集合】
- Python学习笔记7:Python字典和集合
- python基础学习——列表(list), 元祖(tuple), 字典(dict), 字符串(string), 集合(set) 介绍及相互转换
- Python 学习笔记 -- 变量、元组、列表、字典和集合
- python 学习笔记day05-python字典和集合、条件和循环、文件和输入输出
- Python学习第十天——元组、集合、字典
- Python学习 - 集合、字典
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- 编程学习之python 有序字典的学习
- Python 入门学习 -----变量及基础类型(元组,列表,字典,集合)
- Python学习笔记004_字典_集合