Python字典
一、 创建字典
字典是另一种可变容器模型,且可存储任意类型对象。
字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 。而且字典内的键值对是无序的。并不是你创建时什么样子print时就是什么样子,键值对的顺序可能会变。
键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
1.直接创建
a={‘name’:‘tom’,age’:12,’hobby’:[‘sing’,swimming],’number_of_family’:{‘father’:‘dad’,‘mother’:‘mom’}}
2.利用类创建
1)利用元组创建
b=dict((('name','tom'),('age',12))) #利用元组创建
print(b) #{'name': 'tom', 'age': 12}
2)利用列表创建
c=dict([['name','tom'],['age',12]]) #利用列表创建
print(c) #{'name': 'tom', 'age': 12}
二、 字典的操作
1.增
1)直接增加
c={'name': 'tom', 'age': 12} #创建字典c
c[‘mother’]=’mom’ #增加[‘mother’: ’mom’]键值对
print(c) #{'mother': 'mom', 'age':12, 'name': 'tom'}
2)使用setdefault
Setdefault是又返回值的创建,可以返回增加键值对的键的值。创建的同时会检索原字典里是否已有该键值对,如果有则不再创建但可以返回键的值,如果没有则创建。且每次只能增加一个键值对,不能同时增加多个。
d={'age': 12, 'name': 'tom'} #创建字典d
ret=d.setdefault('mother','mom') #增加{'mother':'mom'}
print(d) #{'name': 'tom', 'mother':'mom', 'age': 12}
print(ret) # mom
2.查
1)直接查询
d={'age': 12, 'name': 'tom'} #创建字典d
print (d[‘name’]) # tom
2)查询字典里所有的键名
d={'age': 12, 'name': 'tom'} #创建字典d
print (list(d.keys())) #通过用类创建列表的方法列出键名[ 'age', 'name']
3)以列表嵌套元组的方式显示字典内容
d={'age': 12, 'name': 'tom'} #创建字典d
print(list(d.items())) # [('age', 12), ('name', 'tom')]
4)取出字典里的所有键值
d={'age': 12, 'name': 'tom'} #创建字典d
print(list(d.values())) # ['tom', 'mom', 12]
3.改
1)重新赋值
d={'age': 12, 'name': 'tom'} #创建字典d
d[‘name’]=’jim’ #将name的键值改为jim
print(d) # {'name': 'jim', 'age': 12}
2)update
d={'age': 12, 'name': 'tom'} #创建字典d
e={‘mother’:’mom’} #创建字典e
d.update(e) #将字典e加到字典d中
print(d) # {'name': 'jim', 'mother':'mom', 'age': 12}
4.删
1)del
d={'age': 12, 'name': 'tom'} #创建字典d
del d[‘name’] #删除‘name’键值对
print(d) # {'age': 12}
del d #删除整个字典
2)clear
d={'age': 12, 'name': 'tom'} #创建字典d
d.clear() #清空字典d
print(d) # {}
3)pop
Pop可以返回删除键值对的键值。
d={'age': 12, 'name': 'tom'} #创建字典d
res=d.pop('name') #删除‘name’键值对
print(res) #输出删除键值对的键值‘tom’
print('d=',d) # {'age': 12}
5.排序sorted
Sorted()可以将数字按大小重新排列,也可以将字母按大写排在小写前的26个英文字母的顺序排列。如果是字符串则以首字母排列。(实质是按照ASCII码的排序从小到大排列,即数字<大写字母<小写字母)
1)根据键名大小排序
创建字典时键名可以是字符串(str)或整型(int),但排序时两者不能同时出现在同一字典里,否则会报错(TypeError: unorderable types: int() < str())。
d={'b':'1','a':'2','3':'a','1':'b','D':'5'} #创建字典d
print(d) # {'3': 'a', 'a': '2', '1': 'b', 'D': '5', 'b': '1'}
print('s=',sorted(d.items())) # s= [('1', 'b'), ('3', 'a'),('D', '5'), ('a', '2'), ('b', '1')]
2)将键值按大小输出
创建字典时键值可以是字符串(str)或整型(int),但排序时两者不能同时出现在同一字典里,否则会报错(TypeError: unorderable types: int() < str())。
d={'b':'1','a':'2','3':'a','1':'b','D':'5'} #创建字典d
print(d) # {'3': 'a', 'a': '2', '1': 'b', 'D': '5', 'b': '1'}
print('s=',sorted(d.values ())) # s= ['1', '5', 'A', 'a', 'b']
6.字典遍历
d={'b':'1','a':'A','3':'a','1':'b','D':'5'} #创建字典d
for i in d: #开始遍历
print(i,d[i]) # 3 a
1 b
b 1
a A
D 5
第二种方法:
这种方法因为在输出前要转换所以如果字典内容比较多时会比较慢。
d={'b':'1','a':'A','3':'a','1':'b','D':'5'} #创建字典d
for i ,v in d.items(): #开始遍历
print(i,v) # 3 a
1 b
b 1
a A
D 5