您的位置:首页 > 编程语言 > Python开发

Python的数据类型--字典以及字典练习

2017-12-22 20:56 471 查看
一、字典

1.字典是Python中的唯一的映射类型(哈希表) key 和value对应。

2.字典的对象是可变的,也是value是可变的,就是key后面的值是可以变的,但是字典的健是不可变对象。也就是key 不可变。一个字典中可以使用不同的健值,就是说key 可以是字符串 元祖 。不行是不可变的。像列表就不可以,因为他是可变的。



提示:不能使用列表。不是哈希的类型

二、字典的创建

1.创建字典

(1)创建一个空字典:dic = {} 这样就创建了一个空字典。

(2)创建一个字典 dic = {'a':1,'b':2} 但是创建完后可以发现 顺序被打乱了,因为字典是无序的



因为是哈希表 ,哈希表就是无序的。

key 和value 前面一个是key 不可更改,后一个是value 可以改变。

注意:在字典里Key 是唯一的 不能冲突。

(3)使用dict 来创建字典

dict([(1,2),(3,4)])



使用zip来合并2个列表成为一个字典

dict(zip(list1,list2))



dict(a=10,b=20) 传参数到字典。



2.获取字典的数据

获取字典的数据和前面的元祖列表不一样,前2个是获取的下标来取值,字典是获取的key来取值

比如:a['a'] 这样来取健值a得值。



3.改变字典的值 value

要改变字典的value 也非常简单

用法:a['a'] = 3 这样来修改,前面写的是key, 对这个key来修改值。



三、字典的方法

1.keys()方法:keys方法用于返回字典里所有的key,并组成一个列表。

用法:a.keys()



2.value()方法:和keys方法对应,返回字典里的value,并组成一个列表。

用法:a.value()



3.get()方法:get()方法是获取健值对应的value,如果这个健值key 不在字典中 返回的是None。

用法:a.get('a') 不存在字典中的话 返回None,如果有value值就返回该value值



4.判断key 是否在字典里

(1).可以直接使用in 和not in来判断

用法: 'a' in a

(2).使用has_key()方法也可以判断

用法:a.has_key('a')



5.items()方法:把字典返回成一个列表。每个key和value放入到一个元祖里。

用法:a.items()



6.copy()方法:copy方法是复制一个字典,可以把改字典赋值到一个新的字典中,形成一个一模一样的字典。

用法:b = a.copy() 把字典a的key和value复制到b字典中。如果没有新字典会打印字典中的值。



7.clear()方法:清楚字典里的所有元素。

用法:b.clear() 成为一个空字典。



8.pop()方法:删除一个健值 key 返回的是key对应的value,如果key不存在,会抛出一个异常

用法:a.pop('a') a.pop('d','不存在') 如果不存在kye 可以返回一个指定的对象,如果不加对象,就会报错。





9.update()方法:更新,可以把2个字典更新成一个字典,也可以理解成追加吧。更新的对象
是一个字典或者是一个迭代的对象。

用法:a.update(b) 把字典b更新到字典a中。

a.update({'c':4}) 更新一个字典到a中。



10.a.fromkeys()方法:创建一个新的字典,健值key 来自于序列,value来自自定义,如果没有设置value,那么会对应为一个None值。

用法:a.fromkeys(‘abc’,10) 适用于字典的值都是一样的。





a.fromkeys(range(100),100) 这样就创建了100个key 对应的值都是100.

三、使用for来访问字典

1.打印key

for k in a:

print k



2.打印key和value

for k in a:

print k, a[k] //多个变量显示在一行 用,号



3.用占位符 也可以

for k in a:

print "%s %s" %(k, a[k])



4.使用2个变量来获取对应的key和value

for k, v in a.items():

print k, v



四、字典的练习

info = {}
name = raw_input("Please input you name: ")
age = raw_input("Please input you age: ")
gender = raw_input("Please input (M/F): ")
info['name'] = name
info['age'] = age
info['gender'] = gender
for k, v in info.items():
print "%s:%s" %(k, v)
print 'main end'
这是一个用for循环遍历字典的操作。

结果是:



练习:

1. 现有一个字典dict1 保存的是小写字母a-z对应的ASCII码

dict1 = {'a': 97, 'c': 99, 'b': 98, 'e': 101, 'd': 100, 'g': 103, 'f': 102, 'i': 105, 'h': 104, 'k': 107, 'j': 106, 'm': 109, 'l': 108, 'o': 96, 'n': 110, 'q': 113, 'p': 112, 's': 115, 'r': 114, 'u': 117, 't': 116, 'w': 119, 'v':
118, 'y': 121, 'x': 120, 'z': 122}

1) 将该字典按照ASCII码的值排序

答: sorted(dict1.items(),key = lambda item:item[1])



2) 有一个字母的ASCII错了,修改为正确的值,并重新排序

答:dict1['o'] = 111

sorted(dict1.items(),key = lambda item:item[1])



2. 用最简洁的代码,自己生成一个大写字母 A-Z 及其对应的ASCII码值的字典dict2(使用dict,zip,range方法)

import string

dict2 = dict(zip(string.uppercase,range(65,91)))



3. 将dict2与第一题排序后的dict1合并成一个dict3

答: dict1.update(dict2)

dict3 = dict1.copy()

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: