Python数据类型之字典


Python数据类型之字典

字典(dictionary)是除列表之外Python中最灵活的内置数据结构类型。

列表是有序对象的集合,字典是无序对象的集合。两者区别在于:字典当中的元素是通过键来存取的(键值对),而不是通过偏移存取。

字典用花括号"{}"标识。字典就是C++标准库的map,每一个元素都是成对的,包含key、value两部分。关键字key为不可变类型,如字符型、数字型、元组等,列表、字典等不可作为关键字,value可以是任意类型。

键是唯一的,并且字典只认最后一次赋的键值。   

 #字典的第一种定义方法
>>>dict = {}
>>>dict["name"] = "jack"
>>>dict["age"] = 18
>>>dict["sex"] = "male"
#字典的第二种定义方法
>>>dictTest = {'name':'cindy','addr':'China','age':17}
#输出完整的字典
>>>print dict
{'age':18, 'name': 'jack', 'sex': 'male'}
#字典的遍历
>>> dict1
{'add': 'bj', 'tel': '18888888888', 'name': 'jack'}
>>> for i,j in dict1.items():
...   print i,j          #i代表字典的key,j代表字典的value
...
add bj
tel 18888888888
name jack
>>> for i in dict1:
...   print "%s : %s" %(i,dict1[i])
...
add : bj
tel : 18888888888
name : jack

#格式化输出
>>> for i,j in dict1.items():
...   print "%s : %s" %(i,j)
...
add : bj
tel : 18888888888
name : jack
 
 
#输出键为'name'的值
>>>print dict['name']
jack
#字典中值的修改
>>> dictTest['name'] = 'ruby'
>>> dictTest
{'age': 17, 'name': 'ruby', 'addr': 'China'}
#向字典中追加新元素
>>>> dictTest['school'] = 'bkd'
>>> dictTest
{'age': 17, 'school': 'bkd', 'name': 'ruby', 'addr': 'China'}
 
 
 
 
 
 
#删除字典中的元素
>>> dict1
{'age': 24, 'add': 'bj', 'tel': '18888888888', 'name': 'jack'}
>>> del dict1['add']
>>> dict1
{'age': 24, 'tel': '18888888888', 'name': 'jack'}
 
 
字典(dict)的函数汇总:
#清空字典中所有的条目
>>>dict.clear()
>>>dict
{}
 
 
#输出所有的键,相当于先把key转成list,然后以list形式打印输出
>>>print dict.keys()
['age','name', 'sex']
 
 
#输出所有的值,相当于先把value转成list,然后以list形式打印输出
>>>print dict.values()
[18,'jack', 'male']
 
 
#同dict[key],只是多了一个没有则返回缺省值0,缺省值可以自由定义。但dict[key]如果没有,就会报错。
>>>dict.get('sex',0)
'male'
>>>dict.get('addr',0)
0
#键存在返回true,否则返回false
>>>dict.has_key('name')
True
>>>dict.has_key('a')
False
#返回字典中键的列表
>>>dict.keys()
['age','name', 'sex']
#返货字典中所有键值对的item
>>>dict.items()
[('age',18), ('name', 'jack'), ('sex', 'male')]
#合并两字典,合并时注意,dict中存在的会被覆盖,不存在的会增加。
>>>dict.update(dictTest)
>>>dict
{'addr':'China', 'name': 'cindy', 'age': 17, 'sex': 'male'}
#得到一个元素,并从字典中删除它。已空则抛出异常。
>>>dict.popitem()
('addr','China')
>>>dict
{'name':'cindy', 'age': 17, 'sex': 'male'}
#字典拷贝,但是dict和dict1所指的内存空间是不一样的。
>>>dict1 = dict.copy()
>>>dict1
{'age':17, 'name': 'cindy', 'sex': 'male'}
>>>dict
{'name':'cindy', 'age': 17, 'sex': 'male'}
#查看字典在内存空间中存放的地址
>>>id(dict1)
39352480
>>>id(dict)
39320432
#字典复制,相当于给dict1指定了一个别名,它们是指向同一内存空间的,区别与字典的拷贝函数。
>>>dict12 = dict1
>>>id(dict12)
39352480
#dict.fromkeys(seq,val=None)  创建并返回一个新字典,以seq(序列)中的元素做该字典的键,val 做该字典中所有键对应的初始值(如果不提供此值,则默认为None) 
>>> dict3 = {}
>>> dict3 = dict3.fromkeys(str1,0)
>>> dict3
{'a': 0, 'c': 0, 'd': 0, 'f': 0, '3': 0, '1': 0, 's': 0, '2': 0}
 
 
#dict.setdefault(key,default=None) 如果字典中不存在key 键,由dict[key]=default 为它赋值。
>>> dict1
{'add': 'bj', 'tel': '15558162589', 'name': 'jack'}
>>> dict1.setdefault(1,0)
0
>>> dict1
{1: 0, 'add': 'bj', 'tel': '15558162589', 'name': 'jack'}
 
 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值