**参考:
1. http://www.runoob.com/python/python-dictionary.html
2. [Dive into Python:第三章]内置数据类型**
一、Dict
定义一个字典(对应于C++的map):
d = {“server”:”mpilgrim”, “database”:”master”}
Python中的字典,以”{“开始,以“}”结束。各个键值对之间以”,”为分隔,字典的每个元素是一个由键和值组成的元组。dict的键必须是只读的,可以是数字、字符、元组等,但不能是列表。
上面的定义等同于:
d = dict(server=”mpilgrim”,database=”master”)
访问dict:
d[“server”]返回“mpilgrim”。当键不存在时,将触发异常。不可以使用值来获取键。
修改dict:
d[“server”] = “mdb”
如果”server”键本来存在,则原来的值被修改为”mdb”(dict中的键是唯一的)。如果不存在,则将添加新的键值对。
dict的顺序:
dict是无序的,当每次新增或删除了一个键,则原来的dict顺序将被改变。
dict的常用方法:
按键删除键值对
d = dict(server="mpilgrim",database="master")
del(d["server"])
print d.items()
#[('database', 'master')]
#遍历dict
#按键遍历dict
d = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in d:
print "dict[%s] = %s" % (k,d[k])
#以items的方式遍历dict(items()实际返回的是一个以键和值组成的元组的list)
for (k, v) in d.items():
print "dict[%s] = %s" % (k, v)
#访问key的
#输出key的列表
print dict.keys()
#判断是否含有某一key
print d.has_key("a")
#True
#输出value的列表
print dict.values()
#字典中元素的获取方法
d = {"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
print d.get("a","google") #apple
print d.get("g","baidu") #baidu
#get方法的等价形式
def get(d,k,v):
if k in d:
return d[k]
else:
return v
print get(d,"a","google") #apple
print get(d,"g","google") #google
#修改dict的值
#使用update方法
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
D.update(E)
print D #{'key3': 'value3', 'key2': 'value2', 'key1': 'value1', 'key4': 'value4'}
#update等价形式:
for k in E:
D[k] = E[k]
#update方法解释:
update以另外一个dict为参数,将参数的key和value加入原来的dict中,如果存在相同的key,则进行覆盖
#dict的默认值 dict.setdefault(key,default=None)
d = {} #创建空的dict
d.setdefault("a") #添加key = “a” 的键值对,并设置其默认值为None
print d #{'a': None}
d["a"] = "apple" #更改
d.setdefault("b","default") #设置key = “b” 的默认值为default
print d #{'a': 'apple', 'b': 'default'}
#dict的常用方法:
#1.Python内置函数
cmp(dict1, dict2) #比较两个字典元素。
len(dict) #计算字典元素个数,即键的总数
str(dict) #输出字典可打印的字符串表示
type(variable) #返回输入的变量类型,如果变量是字典就返回字典类型
#2dict成员函数
d.clear() #清空dict
d.copy() #返回一个字典的浅复制
d.fromkeys() #创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
d.get(key,default = None) #返回指定键的值,如果值不在字典中返回default值
d.has_key(key) #如果键在字典dict里返回true,否则返回false
d.items() #以列表返回可遍历的(键, 值) 元组数组
d.keys() #以列表返回一个字典所有的键
d.setdefault(key,default = None) #和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
d.update(d2) #把字典d2的键/值对合并到d里
d.value() #以列表返回字典中的所有值
二、list
list由一对方括作为起始("[""]"),各个元素有英文逗号分隔。同一个list中,不同的元素可以是不同的类型。
#list的创建、访问、切片
list1 = ['physics', 'chemistry', 1997, 2000];
list2 = [1, 2, 3, 4, 5, 6, 7 ];
print "list1[0]: ", list1[0]
print "list2[1:5]: ", list2[1:5] #list的切片操作
#list的追加、更新
list = ['physics', 'chemistry', 1997, 2000];
print "Value available at index 2 : "
list[2] = 2001;
list.append(1989)
#删除列表元素
del list1[2]
list的切片操作
li = [1, 2, 3, 4, 5]
print li[1:] #[2, 3, 4, 5]
print li[0:] #[1, 2, 3, 4, 5]
print li[-2] #4
print li[1:3] #[2, 3]
Python列表脚本操作符
len(list) #求列表元素个数
list1 + list2 #连接list1和list2
list1*n #重复n遍list1
x in list1 #判断x是否在list1中,是则返回true
for x in list1: #遍历list1
cmp(list1, list2) #比较两个列表的元素
max(list) #返回列表元素最大值
min(list) #返回列表元素最小值
list(seq) #将元组转换为列表
Python包含以下方法:
list.append(obj) #在列表末尾添加新的对象
list.count(obj) #统计某个元素在列表中出现的次数
list.extend(seq) #在列表末尾一次性追加另一个序列中的多个值(用新列表扩展原来的列表)
list.index(obj) #从列表中找出某个值第一个匹配项的索引位置
list.insert(index, obj) #将对象插入列表
list.pop(obj=list[-1]) #移除列表中的一个元素(默认最后一个元素),并且返回该元素的值
list.remove(obj) #移除列表中某个值的第一个匹配项
list.reverse() #反向列表中元素
list.sort([func]) #对原列表进行排序
三、tuple
元组与list类似,但是元组一旦创建,他的的元素就不能修改,因此元组可以用作dict的key。同一个元组的不同元素可以是不同的类型。由于元组的值不能修改,因此也不可以删除元组的某一个元素,只能通过del来删除整个元组。元组一旦被删除,就不可以再被引用。任意无符号的对象,以逗号隔开,默认为元组。例如,print的格式化列表。
元组的其他操作与list类似。
tup1 = (); #创建空元组
tup1 = (50,); #当创建只有一个元素的元组时,后面的逗号是必须的