字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。
注意,浮点数比较很不精确,因此千万不要用浮点数作为key!
python字典包含了11个内置方法,具体如下:
序 号 | 函数 | 描述 |
1 | clear(self) | 删除字典内所有的元素 |
2 | copy(self) | 返回一个字典的浅copy ,俗称赋值 |
3 | fromkeys(*args,**kwargs) | 创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值 |
4 | get(self,k,d=None) | 返回指定键的值,如果值不在字典中返回default值 |
5 | items(self) | 以列表返回可遍历的(键, 值) 元组数组 |
6 | keys(self) | 以列表返回一个字典所有的键 |
7 | pop(self,k,d=None) | 删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值 |
8 | popitem(self) | 随机返回并删除字典中的一对键和值 |
9 | setdefault(self,k,d=None) | 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default |
10 | update(self,E=None,**F) | 把self的东西更新到外面字典 |
11 | values(self) | 以列表返回字典中的所有值 |
具体举例子解释如下:
1,字典的键不能是list类型:
1 2 3 4 5 6 7 8 |
|
2,list/set/dict 均不可被哈希 ,int、float、str、tuple:是可以哈希的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
|
3,增
1 2 3 4 5 |
|
4,删
4-1 pop():删除指定key的键值对
1 2 3 4 5 |
|
4-2 clear():清除所有的键值对
1 2 3 4 5 |
|
4-3setdefault():删除指定的元素,如果没有,则返回none
1 2 3 4 5 |
|
5,改
1 2 3 4 5 |
|
6,查
6-1 get():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None
1 2 3 4 5 |
|
6-2 setdefault():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,
同时在字典中增加'test': None键值对
1 2 3 4 5 6 7 8 9 10 11 12 13 |
|
7,更新
7-1update()
1 2 3 4 |
|
info ={'name':'jamnes','age':'32','work':'basketplayer'}
info2 = {'honor':'3 champions'}
info.update(info2)
print(info)
结果:
{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'honor': '3 champions'}
8,返回键,值,键值对
keys():以列表返回字典中的所有键
values():以列表返回字典中的所有值
items():以列表返回可遍历的(键, 值) 元组数组
1 2 3 4 5 6 7 8 9 10 11 12 |
|
9, fromkeys()方法 来源于:http://www.runoob.com/python3/python3-att-dictionary-fromkeys.html
Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。
fromkeys()方法语法:dict.fromkeys(seq[, value])
参数
返回值 该方法返回列表。
以下实例展示了 fromkeys()函数的使用方法:
#!/usr/bin/python3
seq = ('name', 'age', 'sex')
dict = dict.fromkeys(seq)
print ("新的字典为 : %s" % str(dict))
dict = dict.fromkeys(seq, 10)
print ("新的字典为 : %s" % str(dict))
以上实例输出结果为:
新的字典为 : {'age': None, 'name': None, 'sex': None}
新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
10,练习字典
dic={'k1':"v1","k2":"v2","k3":[11,22,33]}
a.请循环输出所有的key
b.请循环输出所有的value
c.请循环输出所有的key和value
d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典
e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典
f.请在k3对应的值中追加一个元素44,输出修改后的字典
g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
|
#start dictionary excercise
info = {'name':'james','age':'32','work':'basketplayer'}
print(info)
info['sex'] = 'famale' #add a pair in dictionary
print("Add a pair for sex in info adictionary:{0}".format(info.get('sex'))) #print format by location
print("When get the key not in the dictionary:{0}".format(info.get('home'))) #get the key not in the dictionary
print(info) #home is not added by get()
print(info.keys()) # a set listed the keys in dictionary
print(info.values()) # a set listed the values in dictionary
print(info.items()) # a set listed the keys and values in form of tuple
info['age']='33' #change the value of key age
print("Change age to 33, now age in info is:{0}".format(info.get('age')))
info.pop('work')
print("Delete work and info is changed to:{0}".format(info.copy())) #use copy() to present dictionary
info.setdefault('age') #use setdefault function and when the key is in the list
print("Delete pair by setdefault function and the corresponding value 33;Now info is:{0}".format(info.copy()))
info.setdefault('work') #use setdefault function and when the key is not in the list
print("Delete pair by setdefault function and the corresponding value 33;Now info is:{0}".format(info.copy()))
info2={'name':'Jodan','honor':'3 champions'}
info.update(info2) #update dictionary, change the one in, add the one not in
print("update info by update(),change name and add honor{0}:".format(info.copy()))
print("return and delete the pair in dictionary randomly{0}:".format(info2.popitem())) #
print("info2:{0},info2 is clear:{1}".format(info2.copy(),info2.clear()))
seq1 = ('name','age','like')
KGY = {'name':'KongGeyang','age':'31','like':'be fuck'}
info2 = info2.fromkeys(seq1) # create new dictionary by fromkeys
print(info2)
info3 ={}
info3 = info3.fromkeys(seq1,"KongGyang")
print(info3)
info3.update(KGY)
print(info3)
#more excercise
dic = {'k1':'v1','k2':'v2','k3':[11,22,33]}
# 循环输出所有的key
for i in dic:
print(i)
for i in dic.keys():
print(i)
#循环输出所有的value
for i in dic.values():
print(i)
#循环输出所有的key 和value
for i,j in dic.items():
print(i,j)
#在地点中加一个键值对,'k4':'v4', 输出添加后的字典
dic2 = {'k4':'v4'}
print(dic)
#修改字典中k1对应的值为alex,输出修改后的字典
dic['k1']='alex'
print(dic)
#对k3的值后追加一个元素44,输出修改后的字典
dic['k3'].append(44)
print(dic)
#在k3对应的值的第一个位置插入元素18,输出修改后的字典
dic['k3'].insert(0,18)
print(dic)