1. 什么是Dictionary(字典)

字典就是很多的数据,但是它有一个目录,可以通过目录中的一个简单值来找到与之相对应的详细信息。换句话说,目录就是内容的一个特殊表示,即目录中的每一个字段,都会在内容中有与之对应的详细信息。也就是说,目录中的每一个信息都是唯一的,与目录中的其他信息互不冲突。
python中的Dictionary不只是用于存储字符串,还可以是任意数据类型,包括字符串和数组,对象,甚至其他的dictionary。dictionary的key可以是字符串和整数,也可以在一个dictionary中混用和匹配key的数据类型。

2. 定义dict

dic={"server":"apache","database":"master"}

每一个元素都是一个key-value对,整个元素用大括号括起来,可以通过key来引用其值,但不能通过值来获得key,所以

dic={"1":"a",2:"b",8:"aa"}
print dic[8]

3. 修改dict

在一个 dictionary中不能有重复的key,但我们可以给一个存在的 key赋值,覆盖原有的值。如,我要将Dictionary dic中“server”的值改为“weblogic”,

dic["server"] ="weblogic"

4.添加key-value

举个简单的例子:我要在Dictionary中添加user=’root’的键值对,

dic[“user”] = “root”。

5.Dictionary的常用方法

Dictionary中的常用方法:

len(a)

得到字典a中元素的个数

a[k]

取得字典a中键K所对应的值

a[k] = v

设定字典a中键k所对应的值成为v

del a[k]

使用 key从一个 dictionary中删除独立的元素。如,删除Dictionary dic中的user=’root’:del dic[“user”]

a.clear()

从一个 dictionary中清除所有元素。如,删除Dictionary dic中的所有元素:dic.clear()

a.copy()

得到字典副本

k in a

字典中存在键k则为返回True,没有则返回False

k not in a

字典中不存在键k则为返回true,反之返回False

a.has_key(k)

判断字典a中是否含有键k

a.items()

得到字典a中的键—值对list

a.keys()

得到字典a中键的list

a.update([b])

从b字典中更新a字典,如果键相同则更新,a中不存在则追加.

a.fromkeys(seq[, value])

创建一个新的字典,其中的键来自sql,值来自value

a.values()

得到字典a中值的list

a.get(k[, x])

从字典a中取出键为k的值,如果没有,则返回x

a.setdefault(k[, x])

将键为k的值设为默认值x。如果字典a中存在k,则返回k的值,如果不存在,向字典中添加k-x键值对,并返回值x

a.pop(k[, x])

取出字典a中键k的值,并将其从字典a中删除,如果字典a中没有键k,则返回值x

a.popitem()

取出字典a中键值对,并将其从字典a中删除

a.iteritems()

返回字典a所有键-值对的迭代器。

a.iterkeys()

返回字典a所有键的迭代器。

a.itervalues()

返回字典a所有值的迭代器。

6. dict具体操作

6.1. 字典的遍历
dic={"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
for k in dic:
    print "dic[%s]=" %k,dic[k]
6.2.字典的items()
dic={"a" : "apple", "b" : "banana", "g" : "grape", "o" : "orange"}
print dic.items()
for (k,v) in dic.items():
    print "dic[%s]=" %k,v
6.3.使用列表,字典作为字典的值
dict={"a" : ("apple",), "bo" : {"b" : "banana", "o" : "orange"}, "g" : ["grape","grapefruit"]}
print dict["a"] #('apple',)
print dict["a"][0] #apple
print dict["bo"] #{"b" : "banana", "o" : "orange"}
print dict["bo"]["o"]#orange
print dict["g"] #['grape', 'grapefruit']
print dict["g"][1] #grapefruit
6.4.输出key和value的列表
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict.keys()
print dict.values()
print dict.items()
6.5.字典中元素的获取方法
#字典中元素的获取方法
dict = {"a" : "apple", "b" : "banana", "c" : "grape", "d" : "orange"}
print dict
print dict.get("c")         #grape         
print dict.get("e", "apple")#None
print dict.get("e")         #None
#get()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
if "key1" in D:
    print D["key1"]
else:
    print "None"
6.6.字典的更新
#字典的更新
dict = {"a" : "apple", "b" : "banana"}
print dict
dict2 = {"c" : "grape", "d" : "orange"}
dict.update(dict2)
print dict
#udpate()的等价语句
D = {"key1" : "value1", "key2" : "value2"}
E = {"key3" : "value3", "key4" : "value4"}
for k in E:
    D[k] = E[k]
print D
6.7.调用sorted()排序
#调用sorted()排序
dict = {"a" : "apple", "b" : "grape", "c" : "orange", "d" : "banana"}
print dict  
#按照key排序
print sorted(dict.items(),key=lambda d:d[0])
#按照value排序
print sorted(dict.items(),key=lambda d:d[1])
6.8.字典的浅拷贝
dict = {"a" : "apple", "b" : "grape"}
dict2 = {"c" : "orange", "d" : "banana"}
dict2 = dict.copy()
print dict2
6.9.字典的深拷贝
import copy
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict2 = copy.deepcopy(dict)
dict3 = copy.copy(dict)
dict2["b"]["g"] = "orange"
print dict
dict3["b"]["g"] = "orange"
print dict
6.10 添加字典条目
dict = {"a" : "apple", "b" : {"g" : "grape","o" : "orange"}}
dict.setdefault("c",{})["h"]="hello"
# 添加条目c,如果c不存在就新建一个{},向c中添加{"h":"hello"}

7. 注意

  • Dictionary中的key值是大小写敏感的。并且在同一个dictionary中不能有重复的key值。并且,Dictionary中没有元素顺序的概念
  • list:可以采用附属索引,从list的尾部开始向前计数。
    直接用a[1:n]实现list的切片
    直接append在队尾添加元素,在insert(pos,obj)在pos处加元素,extend连接list
    直接用index查找元素在list中的位置,没找到时会引发异常,可以用in判断是否存在
    直接用remove删除元素,可以直接用pop得到并删除以后一个元素。
    list可以用*运算符,当做重复器。[1,2]*3=[1,2,1,2,1,2]
    将list中1的每个元素应用一个函数,映射为另一个list:
li=[1,2,3,4]
lili=[elem*2 for elem in li]
print lili  #[2,4,6,8]
  • tuple:不可变的list,tuple可以作为dictionary的key,tuple可以用于一次赋值多个值。
  • python可以支持格式化字符串,将一个值插于%s的位置
params="hello"
print "string template contains %s" %(params)params="hello"
p="qy"
print "string template contains %s %s" %(params,p)

%d表示整数,%f表示浮点数,%.2f表示2位小数,%+.2f表示打印正负

  • “:”.join(list) #表示用:将list里的元素连接
params = ["hello","qy","welcome","to" ,"here"]
a=":".join(params)
print a
# hello:qy:welcome:to:here
  • string.split(“;”)是将字符串根据;分割
a="hello wicle i am peter"
b=a.split(" ")  #用空格作为分割
print b