7.映射和集合类型(射…让人总是浮想)
来源:互联网 发布:英美杂志软件 编辑:程序博客网 时间:2024/05/29 17:45
1、映射类型之一:字典
字典是Python中唯一的映射(Mapping)类型,当然它也属于容器类型(称谓就是多,嘿嘿,不要乱)
2、既然是容器,当然能含有任意个实例对象啦,结构呢就是key value,其实它娘的就是键值对……
3、哈希表-数据结构,牛逼,人类就是牛逼,这样的存储方式也能想到,有个value值存在内存地址的哪呢? 算法随机找个地方存下来,给你个key键, 通过key就能到value,牛逼
4、字典的创建
>>> a = {"name" : "wangyuanwai", 'age' : 16}>>> a{'age': 16, 'name': 'wangyuanwai'}字典的创建,之前也说过,就是{}括起来,嘿嘿,对{}这就是个字典
还有空字典
>>> b = {}>>> b{}
6、查找value,只需要[key名称],就OK啊
>>> a['name']'wangyuanwai'
7、又到增删改查,第六条已经介绍了
改:
>>> a['name'] = "wang yuan wai is king">>> a{'age': 16, 'name': 'wang yuan wai is king'}
删除一个元素
>>> a.pop('name')'wang yuan wai is king'pop函数返回的被删除key的value,有点意思
删除所有元素:查api文档好了
增加:
留的以后介绍吧,呵呵
8、注意:字典不支持加好 +, 不支持重复 操作
>>> a{'age': 16}>>> b = a>>> a{'age': 16}b>>> >>> b{'age': 16}>>> a + bTraceback (most recent call last): File "<pyshell#75>", line 1, in <module> a + bTypeError: unsupported operand type(s) for +: 'dict' and 'dict'>>> a * 2Traceback (most recent call last): File "<pyshell#76>", line 1, in <module> a * 2TypeError: unsupported operand type(s) for *: 'dict' and 'int'>>>
9、[],我们之前就用过啦啊,用这个用过key得到value
10、key也可以用in、not in, 存在、不存在
>>> a{'age': 16}>>> 'age' in aTrue这里是 key可用in、not in啊,千万别理解成value可以用, 如果你用 16 in a,它本身就是去判断key的,你传value纯属打脸啊!
10、一个简便的增加字典元素的方式
>>> a{'age': 16}>>> a['name'] = 'wangdaye'>>> a{'age': 16, 'name': 'wangdaye'}Python牛x啊,发现没有key ‘name’,直接就给你加到字典里面了,cool啊
11、has_key()函数与in、not in的用法是一样的,嘿嘿
<pre name="code" class="python">>>> dict1{'age': 16, 'name': 'niubi'}>>> dict1.has_key('name')True>>> 'name' in dict1True>>>
12、字典的key必须是可哈希的,目前已知数字和字符串可以作为key,List和字典类型不可以作为key
13、更新字典
>>> dict1 = {'name' : 'wangyuanwai', 'age' : 16, 'address' : "beijing"}>>> dict1{'age': 16, 'name': 'wangyuanwai', 'address': 'beijing'}>>> dict1['age'] = 30通过key,直接赋值,哈哈
14、又一次使用字典,作为 print %的 源数据,话说这样满好用的啊
>>> print "%(name)s is a man, he is %(age)d and in the %(address)s" % dict1wangyuanwai is a man, he is 30 and in the beijing
15、删除一个元素的方法
>>> del dict1['age']
16、删除字典所有元素,用到clear()函数
>>> dict1.clear()>>> dict1{}
>>> del dict1
18、对一个字典用type()函数
>>> type(dict1)<type 'dict'>
首先比较字典元素长度、然后是key(ASKⅡ码)、最后是value
20、cmp()函数的使用
>>> dict1 = {'name' : "wangdaye", 'age' : 25, 'city' : 'new york'}>>> dict2 = {'name' : 'wangyuanwai'}>>> dict1 > dict2True>>> cmp(dict1, dict2)1
cmp的返回值:dict1大于dict2,就会返回1,否则返回-1,相等的情况返回0
先比较两者的元素长度,若元素相同,则开始比较key,若key也相同,就开始比较value了,如果都相同,那就是一样的字典了
21、dict()函数,用于生成一个字典实例对象,确实很强大啊
22、len()函数,元素长度啦,哈哈
23、hash()函数,用于一个实例对象是否可以作为key而判断,hash返回参数的hash值
24、keys()函数
>>> dict1{'city': 'new york', 'age': 25, 'name': 'wangdaye'}>>> dict1.keys()['city', 'age', 'name']返回一个key组成的List
25、values()函数
>>> dict1.values()['new york', 25, 'wangdaye']返回一个value组成的List
26、update()函数,好多函数,python好刺激
慢慢看API文档吧,用的时候再议
27、字典中的value没有限制,可以是任意的Python对象
28、字典中的key有限制
a、每个key只能对应一个值,List、Set、元组,是集合,但也是一个值哦,这里要理解哦
b、key必须是有哈希值的,List和字典是可变类型,由于不是可哈希的,不可以作为key
c、所有不可变的类型都是可哈希的, 数字、字符串
d、这里要注意元组,虽然元组也是不可变类型,但是元组的元素必须是数字或者字符串才可以作为key
29、终于到Set啦,Set(集合)
a、集合与List([])和字典({})不同,没有特别的语法格式,List可以用List()函数创建、字典可以用dict()函数,
b、集合(set)的创建,只能通过 set()函数和frozenset()函数创建, 通过 它俩可以得到Set实例对象
30、s就是创建的set,哈哈
>>> s = set('abcdefg')>>> sset(['a', 'c', 'b', 'e', 'd', 'g', 'f'])
>>> 'a' in sTrue>>> 'z' in sFalse
32、通过frozenset()函数创建
>>> sSecond = frozenset('sdjfjklsdfkllkj')>>> sSecondfrozenset(['d', 'f', 'k', 'j', 'l', 's'])
33、更新集合(set),只能用接口函数了,fuck ,add()函数
>>> sset(['a', 'c', 'b', 'e', 'd', 'g', 'f'])>>> s.add('z')>>> sset(['a', 'c', 'b', 'e', 'd', 'g', 'f', 'z'])
34、set与frozenset函数的区别:frozenset得到一个不可变的集合,哈哈
>>> sSecond.add('z')Traceback (most recent call last): File "<pyshell#11>", line 1, in <module> sSecond.add('z')AttributeError: 'frozenset' object has no attribute 'add'>>>
35、联合操作符 |
>>> s = set('adc')>>> sset(['a', 'c', 'd'])>>> t = frozenset('fz')>>> s | tset(['a', 'c', 'z', 'd', 'f'])
>>> s & tset([])
两个集合(s 和t)的差补或相对补集是指一个集合C,该集合中的元素,只属于集合s,而不属
于集合t。差符号有一个等价的方法,difference().
38、对称差分操作符 ^ 看下面的解释吧,哈哈
和其他的布尔集合操作相似,对称差分是集合的XOR(又称”异或“ (exclusive disjunction)).
两个集合(s 和t)的对称差分是指另外一个集合C,该集合中的元素,只能是属于集合s 或者集合t
的成员,不能同时属于两个集合。对称差分有一个等价的方法,symmetric_difference().
39、当然也支持 &= 、 |= 、 ^=、-=
40、再次提到set()与frozenset()
a、set用于生成可变集合
b、frozenset用于生成不可变集合
c、不传入参数,就会得到一个空的集合
41、add()、remove、discard()、pop()、clear(),用于可变集合
42、去看Python的API文档吧,亲
任重道远啊………………
- 7.映射和集合类型(射…让人总是浮想)
- Hibernate_映射简单集合类型和组件集合类型
- python学习05-映射和集合类型
- 浮想
- Hibernate映射集合属性(基本类型)
- 映射值类型集合
- Python映射类型、集合类型
- Python编程基础之六映射(dict)和集合类型(set)
- 《Python核心编程》第七章:映射和集合类型
- Hibernate 映射值类型集合
- 组件映射和集合映射
- Hibernate学习笔记(七)【映射值类型集合】
- Hibernate学习笔记(七)【映射值类型集合】
- hibernate集合映射inverse和cascad…
- hibernate集合映射inverse和cascad…
- 整数映射和类型映射
- Java映射和集合
- 阐释 MFC 集合类--映射类型篇
- Django实现任意文件上传(最简单的方法)
- linux配置
- 2008 Round1AA Minimum Scalar Product
- 安全参透之旅第2章 dig工具使用
- mysql的查询、子查询及连接查询
- 7.映射和集合类型(射…让人总是浮想)
- 安全参透之旅第2章 fierce工具使用
- lightoj 1356 - Prime Independence 【质因子分解 奇偶构图 + HK优化】
- ftp配置
- 数据库增删改查基本语句
- JavaScript闭包研究
- protobuf-安装篇
- oracle数据库使用Datagrid 数据列表的分页
- Sqlite之外键约束跟内外联表