不可变类型:数字,字符串,元组

可变类型:列表,字典

字典的键必须为不可变类型,键值可以是任意类型

字典的两大特点:无序(输出时顺序不一定按照创建时的顺序输出),键唯一;

 

创建字典:

1 dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] }
2 dic2=dict((('name','chendong'),('age',23)))
还可以通过关键字创建字典
3 dic3=dict(name='chendong',age='23')  #注意这里的键值没有引号

 

字典的操作

dic1={'name':'chen','age':23}

 


增加

1.

dic1['birthday']='1996.9.23'

 

2.

ret=dic1.setdefault('name','abc')
 print(dic1)    #输出{'name':'chen','age':23},若键存在,则不添加
 print(ret)    #输出‘chen’,返回结果为原来的键值
 ret2=dic1.setdefault('hobby','play')    #输出{'name':'chen','age':23,‘hobby’:'play'},若键不存在,则添加新键
 print(ret2)    #输出'play',返回结果为新的键值

 

 

查找:

1.

print(dic1['name'])    #输出‘chen’

 

2.

print(dic1.keys())    #返回所有的键,类型为dict_keys,若要返回一个列表,则print(list(dic1.keys()))

 

3.

print(dic1.values())    #返回所有的键值,类型为dict_values

 

4.

print(dic1.items())    #以元组的形式返回所有的键值对 dict_items([('name', 'chen'), ('age', 23)])

 

5.get()方法 

get()方法返回指定键的值,如果值不再字典中,则返回默认值

语法如下:

dict.get(key,default=None)

此语法中dict代表指定字典,key代表字典中要查找的键,default代表指定键的值不存在时返回默认值。

student={'小明':1001,'小红':1002}
print('小明的学号是:%s'%student.get('小明'))

使用其他方法试图访问字典中不存在的项时会出错,而get()方法不会

 

修改:

1.

dic1['name']='cd'
print(dic1)    #输出{'name':'cd','age':23}

 

2.update()方法

dic2={'name1':'chendo','age':'12'}
dic1.update(dic2)
print(dic1)     #输出结果把字典dic2加到dic1上去,若dic2中有与dic1中相同的键名,则覆盖原来的键值

 

删除:

1.del

del dic1['name']    #删除dic1字典的name键值对

 

 

2.clear()方法

dic1.clear()    #清空字典

 

 

3.pop()方法

ret=dic1.pop('name')
print(ret)    #输出由pop()方法返回的删除的键值
print(dic1)    #输出删除当前键后的字典

 

 

4.popitem()方法

随机删除一个键值对,并以元组返回删除的键值对

 

 字典的格式化字符串

使用字典(前提是只以字符串作为键)来格式化字符串:

>>> student={'小明':1,'小红':2,'小刚':3}
>>> print('小明的学号是:%(小明)s,小刚的学号是:%(小刚)s'%student)
小明的学号是:1,小刚的学号是:3

可见字典的格式化方式是在每个转换说明符的%字符后面加上用圆括号括起来的键,再跟上其他说明元素。

字典的其他常用方法及操作:

1.fromkeys()方法

dic=dict(fromkeys(['name1','name2','name3'],'chen'))
print(dic)

#输出结果为{'name1': 'chen', 'name2': 'chen', 'name3': 'chen'}

但这个方法存在一些问题,涉及到深浅拷贝的问题,以后再讨论

 

2.字典的排序:

  sorted()函数

dic{2:'2',1:'1','3':'3'}
print(sorted(dic)) #s输出[1, 2, 3]
print(sorted(dic.values())) #输出['1', '2', '3']
print(sorted(dic.items())) #输出[(1, '1'), (2, '2'), (3, '3')]

 

3.字典的遍历

(1)

dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] }
for i in dic:
  print(i)

输出:

name
age
birthday
(1, 2, 3)

输出键,若想输出键值对,print(i,dic[i])

(2)

dic={ 'name':'chen' , 'age':23 , 'birthday':'1996.9.23' , (1,2,3):[1,2,3] }
for i,v in dic.items():
  print(i,v)

两种方法推荐用第一种,效率高

 

posted on 2018-02-19 16:38  行走的cd  阅读(157)  评论(0编辑  收藏  举报