字典是在大括号里放置逗号分隔的 关键字:值对 ,{key ,value},是无序的,关键字相当于一个内存地址。dictionary是python唯一的映射关系, 关键字必须是可以hash的,可以哈希表示key必须是不可变的类型,如数字,string,tuple等,否则会出现typeerror,可以hash函数,判断一个对象是否可以映射。
>>> hash(123)
123
>>> hash('str')
-311850177
>>> hash([1,2])
Traceback (most recent call last):
File "<pyshell#2>", line 1, in <module>
hash([1,2])
TypeError: unhashable type: 'list'
>>> {6,'six'}
{'six', 6}
>>> {[1,2],2}
Traceback (most recent call last):
File "<pyshell#4>", line 1, in <module>
{[1,2],2}
TypeError: unhashable type: 'list'
dictionary的index
序列是以连续的整数作为index,而dictionary以key为索引,key可以是任意不可变的类型。
字典的创建:{key:value[,关键字:值n]}
dict()函数创建字典,list和tuple作为参数
>>> d1=dict(([1,'a'],[2,'b']))
>>> print(d1)
{1: 'a', 2: 'b'}
>>> d2=dict([[1,'a'],[2,'b']])
>>> d2
dictionary基本操作
>>> dt1={'name':{'first':'tom','second':'jack'}}
>>> dt1['name']['second']
'jack'
>>> dt2={'sore':[66,77,88]}
>>> dt2['sore'][0]
66
更新dictionary
如果key已经存在,则修改对应的值。如果不存在,则增加一个元素。
>>> dt1={'n1':66,'n2':68}
>>> dt1['n1']=22
>>> dt1['n3']=99
>>> dt1
{'n1': 22, 'n3': 99, 'n2': 68}
del dictionary_name[key] 删除关键字对应的元素
del dictionary_name 删除字典
>>> del dt1['n1']
>>> dt1
{'n3': 99, 'n2': 68}
>>> del dt1
>>> dt1
Traceback (most recent call last):
File "<pyshell#7>", line 1, in <module>
dt1
NameError: name 'dt1' is not defined
字典长度获取 len(),也有max(),min(),sum()等。
>>> dt={1:'a1',2:'a2',3:'a3'}
>>> len(dt)
3
>>> max(dt)
3
>>> sum(dt)
6
dictionary对象常用的方法。
d.keys() 换回包含字典所有key的list
d.values()返回字典所有值的list
d.items()返回一个包含所有 (key,value) tuple的列表。
>>> dt
{1: 'a1', 2: 'a2', 3: 'a3'}
>>> dt.keys()
dict_keys([1, 2, 3])
>>> print(dt.values())
dict_values(['a1', 'a2', 'a3'])
>>> print(dt.items())
dict_items([(1, 'a1'), (2, 'a2'), (3, 'a3')])
d.copy() 返回字典d的副本
d.clear() 删除字典d的全部元素,字典d变成空字典
d.pop(key) 从字典d删除关键字key并返回删除的值。
>>> d=dt.copy()
>>> d
{1: 'a1', 2: 'a2', 3: 'a3'}
>>> d.pop(1)
'a1'
>>> d
{2: 'a2', 3: 'a3'}
>>> d.clear()
>>> d
{}
get()方法和pop()方法
d.get(key[,value]),如果字典关键字是key,则返回key对应的值,如果key不存在,则返回None。pop()的方法和get方法相似。
>>> dt={'z':11,22:'bb','ee':68}
>>> dt.get(22)
'bb'
>>> dt.pop('z')
11
>>> dt
{'ee': 68, 22: 'bb'}
d1.update(d2)方法,把d2的字典元素添加到d1中。has_key()方法,如果key在字典则返回true,否则返回false。
>>> dt0={'11':11,'22':33}
>>> dt.update(dt0)
>>> dt
{'11': 11, 'ee': 68, 22: 'bb', '22': 33}
dictionary的遍历
def display_dict(dt):
for key in dt.keys():
print('key={0},value={1}'.format(key,dt[key]))
>>> dt={'11':11,'22':22,'33':33}
>>> display_dict(dt)
key=11,value=11
key=22,value=22
key=33,value=33
def display_dict(dt):
for item in dt.items():
print(item)
>>> display_dict(dt)
('33', 33)
('11', 11)
('22', 22)
集合的操作
在python中,集合是一堆无序排列,不重复的元素,类似数学的集合,可以去重,求交集,并集,补集等等。
用set()函数 或者{ }创建集合
>>> se={11,22,33}
>>> print(se)
{33, 11, 22}
>>> se2=set(44,55,66)
>>> se2
{66, 44, 55}
>>> c=se|se2
>>> c
{33, 66, 22, 55, 11, 44}
>>> c1=se&c
>>> c1
{33, 11, 22}
>>> c2=c^se
>>> c2
{66, 55, 44}
网友评论