Python学习(三)——字典、有序字典、集合
来源:互联网 发布:善用佳软 知乎 编辑:程序博客网 时间:2024/05/17 02:58
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 dTrue>>> 'e' in dFalse
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 operatordic = {'a':3, 'b':1, 'c':2}d = dic.iteritems()print dprint 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) + 1print vote
输出:
{0: 2, 1: 4, 2: 3, 'a': 2}
2、有序字典
区别于字典内部存放的顺序和key放入的顺序没有关系,有序字典作为字典的子类,它的内部存放关系取决于和key放入的顺序.
对比如下:
有序字典:
import collectionsdic0 = 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 four37 three62 two13 one20 zero
字典:
dic1 ={45:'four', 37:'three', 62:'two', 13:'one', 20:'zero'}for key, value in dic1.items(): print key, value
输出为:
20 zero13 one45 four62 two37 three
3、集合 set
集合用于包含一组无序的对象。集合中的元素不能重复,重复元素会被自动过滤。与dict相比set是一组key的集合但不存储value。
①创建set:
>>> s=set('ashkjh')>>> sset(['a', 'h', 's', 'j', 'k'])>>> s=set([1,2,3,4,5])>>> sset([1, 2, 3, 4, 5])>>> s=set('12345')>>> sset(['1', '3', '2', '5', '4'])
②添加元素:
可以使用add()添加一项或使用update()添加多项(可以添加重复项,但无效果):
>>> s=set([1,2,3])>>> sset([1, 2, 3])>>> s.add(4)>>> sset([1, 2, 3, 4])>>> s.update([7,8,9])>>> sset([1, 2, 3, 4, 7, 8, 9])
③删除元素:
通过remove(key)删除元素:
>>> s=set([1,2,3])>>> sset([1, 2, 3])>>> s.remove(3)>>> sset([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'])>>> s1set(['1', 'x', '2', 'y'])>>> s2=set(['x','y','z','w'])>>> s2set(['y', 'x', 'z', 'w'])>>> B=s1|s2>>> Bset(['1', '2', 'w', 'y', 'x', 'z'])>>> J=s1&s2>>> Jset(['y', 'x'])>>> C=s1-s2>>> Cset(['1', '2'])>>> D=s1^s2>>> Dset(['2', '1', 'z', 'w'])
- Python学习(三)——字典、有序字典、集合
- Python学习——字典和集合
- python学习笔记(4)——字典与集合
- python学习-集合、字典
- python -- 有序字典, 有序字典的排序
- 集合(7-有序字典SortedDictionary)
- python 有序字典
- python--有序字典
- python中的有序字典
- python有序字典
- python 字典有序
- python有序字典
- python 有序字典OrderedDict
- Python有序字典
- Python 有序字典简介
- python 有序字典
- python字典保持有序
- python核心编程(七)—字典和集合
- Easy kengen
- 接入WebSocket
- Makefile 文件怎么写
- Spring的Resource的方法
- C/C++ | 27-19 写出程序把一个链表中的接点顺序倒排
- Python学习(三)——字典、有序字典、集合
- Vim代码补全插件YouCompleteMe的自动化安装[转]
- 矩阵分解在推荐系统的应用以及python代码的实现
- tcpcopy的工作原理
- C/C++ | 28-20 写出程序删除链表中的所有节点
- redis windows系统下安装
- H
- HDU 2017 多校联赛2 1001 Is Derek lying?
- Floyd算法