元组Tuple
元组是序列类型一种,也是不可变类型数据结构,对元组修改后会生成一个新的元组。所以Tuple对象并没有太多的内置方法。
count() 查询一个元素在Tuple中的数量
count(…)
T.count(value) -> integer – return number of occurrences of value
返回一个value在Tuple出现的次数,即个数。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
index() 查询元素在Tuple中的索引号
index(…)
T.index(value, [start, [stop]]) -> integer – return first index of value.
Raises ValueError if the value is not present.
返回在指定范围中[start,[stop]],第一次出现的value的索引。
- 1
- 2
元组的遍历
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
字典Dictionary
字典数据类型使用键值对的映射关系来关联数据。
创建一个字典对象
简单的创建
- 1
fromkey()使用keys来创建字典
fromkeys(…)
dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v.
v defaults to None.
通过一个keys的序列来创建字典,可以指定keys映射的value,默认为None。
- 1
- 2
- 3
- 4
查询
查询字典中key映射的value
- 1
- 2
get()查询Key映射的value,当key不存在时,返回默认值
get(…)
D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.
自动添加(字典的默认值):自动添加是字典数据类型的特性,即使一个Key起初不存在于字典中,也可为Key分配一个值,以此来建立新的项。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
若不使用get()函数去获取一个不存在的key对应的value时,会报错。
len(dictName)获取字典长度
len(…)
len(object) -> integer
Return the number of items of a sequence or mapping.
len()是Python的内建函数,可以获取序列或字典的长度,即元素的个数。
- 1
- 2
keys()列出dict的Keys列表
keys(…)
D.keys() -> list of D’s keys
- 1
- 2
values()列出dict的values列表
values(…)
D.values() -> list of D’s values
- 1
- 2
添加字典项
通过赋值为字典添加一个项
格式:dictName[keyN] = valueN
- 1
- 2
- 3
- 4
- 5
- 6
- 7
通过setdefault()增加
setdefault(…)
D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D
当key存在时,call D.get(k,d)方法,即获取key映射的value。当key不存在时,执行D[k]=d,即为dict增加一个新的元素。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
删除字典项
del语句,删除字典中key对应的一个项
del语句可以操作所有的迭代器对象。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
popitem() 将随机一个字典键值对弹出(删除并返回)
popitem(…)
D.popitem() -> (k, v), remove and return some (key, value) pair as a
2-tuple; but raise KeyError if D is empty.
以tuple(k,v)的形式删除字典的一个元素,并返回。需要一个接受返回的对象。若字典为空,则报错。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
pop()弹出key映射的value
pop(…)
D.pop(k[,d]) -> v, remove specified key and return the corresponding value.
If key is not found, d is returned if given, otherwise KeyError is raised
- 1
- 2
- 3
- 4
- 5
一般情况下,当字典为空时调用了D.pop()方法的化会触发一个KeyError。但是也可以通过下面的调用方式来添加key不存在时的返回默认值。
当Key不存在时,返回默认值,避免报错:
- 1
- 2
- 3
- 4
- 5
clear()清空字典中的所有项
clear(…)
D.clear() -> None. Remove all items from D.
清空所有项目,返回None。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
修改
简单的修改dict中key映射的value值
格式:“`dictName[key] = newValue
- 1
- 2
- 3
- 4
update()更新字典
update(…)
D.update([E, ]**F) -> None. Update D from dict/iterable E and F.
If E present and has a .keys() method, does: for k in E: D[k] = E[k]
If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v
In either case, this is followed by: for k in F: D[k] = F[k]
使用另一个字典来更新一个字典,通过匹配的key来更新value。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
当然,也可以只更新其中若干个value。
字典的复制
copy()浅复制
字典的浅复制与List的浅复制类似,都只是对引用对象的copy。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
注意:对浅copy得到的新字典中的value做替换操作(替换整个value),是不会影响到元字典的。但是如果对新字典中的value做了修改操作(修改其中一部分),就会影响到原字典。如下:
- 1
- 2
- 3
- 4
- 5
- 6
因为两个key的id指向同一个数据对象,对数据对象做了修改(改变数据对象)后就会都受到影响。但替换(改变引用对象)整个value,即将新字典中key的id指向另一个数据对象,不会改变原数据对象。
深copy和浅copy的详细介绍,请参考:http://blog.csdn.net/jmilk/article/details/49560989
类型转换
item() 将每个字典项,转化为Tuple和List的混合数据类型
items(…)
D.items() -> list of D’s (key, value) pairs, as 2-tuples
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
因为返回的是List类型对象,所以可以使用索引操作符。
- 1
- 2
- 3
- 4
- 5
由此可以看出,可以对一个对象做 操作,主要由对象的类型来决定。
成员关系
判断一个kay是否存在dict中
- 1
- 2
- 3
- 4
- 5
True ⇒ key存在dict中
False ⇒ key不存在dict中
使用成员关系运算符判断
成员资格:'age' in dic
只能通过key的成员关系来判断。
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
字典的遍历
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
格式化输出value
通过格式化%(key)format
来输出映射的value
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
只要key in dict,就能使用任意的转换说明符。