python中dict的用法

#字典的添加、删除、修改操作
dict = {“a” : “apple”, “b” : “banana”, “g” : “grape”, “o” : “orange”}
dict["w"] = “watermelon”
del(dict["a"])
dict["g"] = “grapefruit”
print dict.pop(“b”)
print dict
dict.clear()
print dict

#字典的遍历
dict = {“a” : “apple”, “b” : “banana”, “g” : “grape”, “o” : “orange”}
for k in dict:
print “dict[%s] =” % k,dict[k]

#字典items()的使用
dict = {“a” : “apple”, “b” : “banana”, “c” : “grape”, “d” : “orange”}
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()

#调用items()实现字典的遍历
dict = {“a” : “apple”, “b” : “banana”, “g” : “grape”, “o” : “orange”}
for (k, v) in dict.items():
print “dict[%s] =” % k, v

#调用iteritems()实现字典的遍历
dict = {“a” : “apple”, “b” : “banana”, “c” : “grape”, “d” : “orange”}
print dict.iteritems()
for k, v in dict.iteritems():
print “dict[%s] =” % k, v
for (k, v) in zip(dict.iterkeys(), dict.itervalues()):
print “dict[%s] =” % k, v

#使用列表、字典作为字典的值
dict = {“a” : (“apple”,), “bo” : {“b” : “banana”, “o” : “orange”}, “g” : ["grape","grapefruit"]}
print dict["a"]
print dict["a"][0]
print dict["bo"]
print dict["bo"]["o"]
print dict["g"]
print dict["g"][1]

dict = {“a” : “apple”, “b” : “banana”, “c” : “grape”, “d” : “orange”}
#输出key的列表
print dict.keys()
#输出value的列表
print dict.values()
#每个元素是一个key和value组成的元组,以列表的方式输出
print dict.items()

dict = {“a” : “apple”, “b” : “banana”, “c” : “grape”, “d” : “orange”}
it = dict.iteritems()
print it

#字典中元素的获取方法
dict = {“a” : “apple”, “b” : “banana”, “c” : “grape”, “d” : “orange”}
print dict
print dict.get(“c”, “apple”)
print dict.get(“e”, “apple”)
#get()的等价语句
D = {“key1″ : “value1″, “key2″ : “value2″}
if “key1″ in D:
print D["key1"]
else:
print “None”

#字典的更新
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
#字典E中含有字典D中的key
D = {“key1″ : “value1″, “key2″ : “value2″}
E = {“key2″ : “value3″, “key4″ : “value4″}
for k in E:
D[k] = E[k]
print D

#设置默认值
dict = {}
dict.setdefault(“a”)
print dict
dict["a"] = “apple”
dict.setdefault(“a”,”default”)
print dict

#调用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])

#字典的浅拷贝
dict = {“a” : “apple”, “b” : “grape”}
dict2 = {“c” : “orange”, “d” : “banana”}
dict2 = dict.copy()
print dict2

#字典的深拷贝
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

python字符串解析,利用string模块和正则表达式re模块
1.python字符串通常有单引号(’…’)、双引号(”…”)、三引号(”"”…”"”)或(”’…”’)包围,三引号包含的字符串可由多行组成,一般可表示大段的叙述性字符串。在使用时基本没有差别,但双引号和三引号(”"”…”"”)中可以包含单引号,三引号(”’…”’)可以包含双引号,而不需要转义。

2. 用(\)对特殊字符转义,如(\)、(’)、(”)。

3.常用字符串内置函数
1)str.count() //返回该字符串中某个子串出现的次数
2)str.find() //返回某个子串出现在该字符串的起始位置
3)str.lower() //将该字符串全部转化为小写
4)str.upper() //转为大写
5)str.split() //分割字符串,返回字串串列表,默认以空格分割
6)len(str) //返回字符串长度

例如:
>>> str = ‘Hello, world’
>>> str.count(‘o’)
>>> 2
>>> str.find(‘lo’)
>>> 3
>>> str.lower()
>>> ‘hello, world’
>>> str.upper()
>>> ‘HELLO, WORLD’
>>> str.split()
>>> ['Hello,', 'world']
>>> str.split(‘,’)
>>> ['Hello', ' world']
>>> len(str)
>>> 13
>>> str
>>> ‘Hello, world’

以上所有操作都不会改变字符串本身!

4.正则表达式,re模块
import re
常用函数:
1)compile(): //将正则表达式字符串编译成正则re对象
2)search() //在目标字符串中匹配正则表达式
3)match() //从目标字符串第一个字符开始匹配正则表达
search和match匹配成功返回MatchObject对象,失败返回None
>>> p = re.compile(‘abc’)
>>> p.search(‘zabcy’)
<_sre.SRE_Match object at 0x2a95659030>
不先编译成正则re对象也是可以的,上例也可以为:
>>> re.search(‘abc’,'xabcy’)
<_sre.SRE_Match object at 0x2a95659098>

compile还可加些标志位,例如:re.I(re.IGNORECASE)忽略大小写
>>> p = re.compile(‘abc’)
>>> print p.search(‘xAbCy’)
None
>>> p = re.compile(‘abc’,re.I)
>>> print p.search(‘xAbCy’)
<_sre.SRE_Match object at 0x2a9565a098>

search和 match区别见下例:
>>> p = re.compile(‘abc’)
>>> print p.search(‘xxxabcyyy’)
<_sre.SRE_Match object at 0x2a95659030>
>>> print p.match(‘xxxabcyyy’)
None
>>> print p.match(‘abcyyy’)
<_sre.SRE_Match object at 0x2a95659098>

4)split() //类似字符串内置函数split()
区别在于:内置split()以确定字符串分割,而正则split函数以正则表达式分割字

例如:以空格(1个或者多个空格)分割:

>>> p.split(‘a b c d’)
['a', 'b', 'c', 'd']

而内置split分割的结果为:

>>> ‘a b c d’.split(‘ ‘)
['a', 'b', '', '', 'c', '', 'd']

5)findall() //返回目标字符串中匹配正则表达式中所有子串列表

>>> p = re.compile(‘^([a-z]{2}):([1-9]{3}):(.+)$’)
>>> p.findall(‘as:123:a12′)
[('as', '123', 'a12')]

上例中正则表达式的子串为3个用括弧括起的,分别为:’[a-z]{2}’、’[1-9]{3}’、’.+’, 分别被 as、123、a12匹配,注意此返回的是匹配字符串元组的一维列表。
以上比较常用的正则函数,更多用法请参照python手册。

5.字符串与数字相互转换,string模块
import string
string.atoi(str[,base]) //base为可选参数,表示将字符转换成的进制类型
数字转换成字符串可简单了,直接用str()

6. 字符与ASCII转换
char->ascii ord()
ascii->char chr()