Python 字典详解和练习

来源于http://www.cnblogs.com/wj-1314/p/8421724.html 

python 字典操作方法详解 

 

字典是一种通过名字或者关键字引用的得数据结构,key 类型需要时被哈希,其键可以是数字、字符串、元组,这种结构类型也称之为映射。字典类型是Python中唯一內建的映射类型。

  注意,浮点数比较很不精确,因此千万不要用浮点数作为key!

 

python字典包含了11个内置方法,具体如下:

Python 字典详解和练习_第1张图片

 

 

序 号  函数 描述
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

list = [1,2,3,4]

info2 = {list:'number'}

 

结果:

Traceback (most recent call last):

  File "D:/字典.py", line 2, in

    info2 = {list:'number'}

TypeError: unhashable type: 'list'

2,list/set/dict 均不可被哈希  ,int、float、str、tuple:是可以哈希的

1

2

3

4

5

6

7

8

9

10

11

12

13

14

1 list.__hash__;

    #结果为None

2 set.__hash__;

    #结果为None

3 dict.__hash__;

    #结果为None

4 print(int.__hash__);

    # 

5 print(float.__hash__);

    #

6 print(str.__hash__); 

    #

7 print(tuple.__hash__);

    #

 3,增

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

info['sex'] = 'fale'

print(info)

结果:

{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': 'fale'}

4,删

4-1 pop():删除指定key的键值对

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

info.pop('work')

print(info)

结果:

{'name': 'jamnes', 'age': '32'}

4-2 clear():清除所有的键值对

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

info.clear()

print(info)

结果:

{}

4-3setdefault():删除指定的元素,如果没有,则返回none

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

info.setdefault('son')

print(info)

结果:

None

  

5,改

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

info['age']='33'

print(info)

结果:

{'name': 'jamnes', 'age': '33', 'work': 'basketplayer'}

6,查

6-1 get():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None

1

2

3

4

5

info ={'name':'jamnes','age':'32','work':'basketplayer'}

a =info.get('age')

print(a)

结果:

32

6-2 setdefault():通过给定的key,查找对应的value,如果给定的可以在字典中无,则返回None,
      同时在字典中增加'test': None键值对

1

2

3

4

5

6

7

8

9

10

11

12

13

info ={'name':'jamnes','age':'32','work':'basketplayer'}

a =info.setdefault('age')

print(a)

print(info)

b =info.setdefault('sex')

print(b)

print(info)

 

结果:

32

{'name': 'jamnes', 'age': '32', 'work': 'basketplayer'}

None

{'name': 'jamnes', 'age': '32', 'work': 'basketplayer', 'sex': None}

7,更新

7-1update()

1

2

3

4

一,更新里面有的信息,就是改变
info
={'name':'jamnes','age':'32','work':'basketplayer'}

info2 = {'name':'wade','age':'33','work':'basketplayer'}

info.update(info2)

print(info)
结果:
{
'name':'wade','age':'33','work':'basketplayer'}

二,更新里面没有的信息,就是添加

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

dict ={'k1':'v1','k2':'v2','k3':'v3'}

#1,请循环遍历除所有的key

for keys in dict.keys():

    print(keys)

 

#遍历出所有的value

for value in dict.values():

    print(value)

 

#遍历出

for key,value in dict.items():

    print(key+':'+value)
#结果:
k1
k2
k3
v1
v2
v3
k1:v1
k2:v2
k3:v3

9, fromkeys()方法 来源于:http://www.runoob.com/python3/python3-att-dictionary-fromkeys.html 

Python 字典 fromkeys() 函数用于创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值。

fromkeys()方法语法:dict.fromkeys(seq[, value])

参数

  • seq -- 字典键值列表。
  • value -- 可选参数, 设置键序列(seq)的值。

返回值   该方法返回列表。

以下实例展示了 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

dic={'k1':"v1","k2":"v2","k3":[11,22,33]}

#   a.请循环输出所有的key

for i in dic :

    print(i)

for i in dic.keys():

    print(i)

#   b.请循环输出所有的value

for i in dic.values():

    print(i)

  c.请循环输出所有的key和value

for i,j in dic.items():

    print(i,j)

#   d.请在字典中添加一个键值对,"k4":"v4",输出添加后的字典

dic2 = {'k4':'v4'}

dic.update(dic2)

print(dic)

dic['k4'] = 'v4'

print(dic)

 

#   e.请在修改字典中“k1”对应的值为“alex”,输出修改后的字典

dic['k1'] ='alex'

print(dic)

  f.请在k3对应的值中追加一个元素44,输出修改后的字典

dic['k3'].append(44)

print(dic)

#   g.请在k3对应的值的第1个位置插入个元素18,输出修改后的字典

dic['k3'].insert(0,18)

print(dic)

#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)

 

 

你可能感兴趣的:(Python,Python)