[Dive into Python:第三章]内置数据类型

**参考:
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为参数,将参数的keyvalue加入原来的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,);   #当创建只有一个元素的元组时,后面的逗号是必须的
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值