字典是另一种可变容器模型,且可存储任意类型对象。自描述型数据结构
字典是可变类型,
字典中的数据是无序的
一个字典条目的语法是 键:值,键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一,
值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
key 整型,字符串的居多,valu随意
创建字典语法:花括号:{key1 : value1, key2 : value2 } 花括号表示,对用冒号 : 分割,每个键值对之间用逗号 , 分割
dict = {'a': 'zhangsan', 'b': 'lisi', 'b': 'tiantian'}
print dict 输出:{'a': 'zhangsan', 'b': 'tiantian'}
访问字典里的值:通过key dic[key] 如果key不存在,报KeyError 没有索引!不能分片!
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First'}
print dict['Name'] #输出Zara
print dict['Name1'] #会报错,提示 KeyError: 'Name1'
修改字典:向字典添加新内容的方法是增加新的键/值对
语法:dic[key] = value,key不存在,就是新增字典;如果key存在,就是更新字典的值,例子:
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
dict['Name'] = 'Tom';dict['Teacher']='Mrs Li' #把名字的值修改为Tom,增加了一个teacher内容
print dict #输出 {'School': 'Middle', 'Teacher': 'Mrs Li', 'Age': 7, 'Name': 'Tom', 'Class': 'First'}
删除字典元素: del dic[key] 删除键是'key'的条目 ; del dict 删除词典
dict = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
del dict['Name'] # 删除键是'Name'的条目
dict.clear() # 清空词典所有条目
del dict() # 删除词典
print dict #此时输出会报错,SyntaxError: can't delete function call 不能删除函数调用
字典内置函数&方法
内置函数如下:
Python字典的 cmp() 函数比较两个字典元素,cmp(dict1, dict2) ,两个字典元素相同返回0,字典dict1大于字典dict2返回1,字典dict1小于字典dict2返回-1。
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
dict2 ={'province':'甘肃','name':'雷志强','level':'厅长','behavior':'贪污','money':'93亿'}
print cmp(dict1,dict2) #返回-1
字典(Dictionary) len() 函数计算字典元素个数,即键的总数。
dict2 ={'province':'甘肃','name':'雷志强','level':'厅长','behavior':'贪污','money':'93亿'}
print len(dict2) #返回5
Python 字典(Dictionary) str() 函数将值转化为适于人阅读的形式,以可打印的字符串表示。
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
print str(dict1) #结果: {'School': 'Middle', 'Age': 7, 'Name': 'Zara', 'Class': 'First'}
Python 字典(Dictionary) type() 函数返回输入的变量类型,如果变量是字典就返回字典类型。
print type(dict2) #输出: <type 'dict'>
方法
dict.clear() 删除字典内所有元素,删除后字典里面的元素没有了,字典还在
dict2 ={'province':'甘肃','name':'雷志强','level':'厅长','behavior':'贪污','money':'93亿'}
dict2.clear()
print len(dict2) #输出0
dict.copy() 返回一个字典的浅复制
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
print dict1.copy() #输出还是 {'Class': 'First', 'School': 'Middle', 'Age': 7, 'Name': 'Zara'}
dict.fromkeys(seq[, val]) 创建一个新字典,以序列 seq 中元素做字典的键,val 为字典所有键对应的初始值
A = ('place','weather','wet','warm')
dict1=dict.fromkeys(A)
print dict1 #输出: {'warm': None, 'weather': None, 'place': None, 'wet': None}
dict.get(key, default=None) 返回指定键的值,如果值不在字典中返回default值
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
print dict1.get('Class') #这个结果是 First
print dict1.get('Class123') # 这个结果是 None
dict.has_key(key) 如果键在字典dict里返回true,否则返回false:判断key存在
d= {'k3': 3, 'k2': 2, 'k1': 1}
print d.has_key('k3')
if 'k3' in d:
#两种方法:True
dict.items() 以列表返回可遍历的(键, 值) 元组数组 ;dict.keys() 以列表返回一个字典所有的键 ; dict.values() 以列表返回字典中的所有值
pop(key[,default])
删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值。
dict1 = {'Name': 'Zara', 'Age': 7, 'Class': 'First','School':'Middle'}
print dict1.has_key('Name2') #判断key存在 False
print dict1.keys() #返回一个包含字典所有KEY的列表 ['School', 'Age', 'Name', 'Class']
print dict1.values() #返回一个包含字典所有value的列表 ['Middle', 7, 'Zara', 'First']
print dict1.items() #返回一个包含所有(键,值)元祖的列表 [('School', 'Middle'), ('Age', 7), ('Name', 'Zara'), ('Class', 'First')]
print dict1.pop('Age') #删除键key的项并返回key对应的 value值 如果key不存在,报错 返回7,
dict.update(bdict) 将字典bdict的键值对添加到字典adict中 key存在,就更新value。key不存在就新增数据项 类似于字典合并
#字典合并
dict1 = {'zhangsan': '2341', 'lisi': '9102', 'tiantian': '3258'}
dict2 = {'wangyi': '2341', 'zhangsan': '9889', 'lisi': '7540'}
dict1.update(dict2)
print dict1 #输出结果:{'tiantian': '3258', 'lisi': '7540', 'wangyi': '2341', 'zhangsan': '9889'}
popitem() 随机返回并删除字典中的一对键和值
dict1 = {'zhangsan': '2341', 'lisi': '9102', 'tiantian': '3258'}
print dict1.popitem() #输出 随机的一堆键和值 ('tiantian', '3258')
print dict1 #输出删除后的字典 {'lisi': '9102', 'zhangsan': '2341'}
练习题目:把字符串”k1:1|k2:2|k3:3”处理成 python 字典的形式:{'k3': 3, 'k2': 2, 'k1': 1}
string = "k1:1|k2:2|k3:3"
d = {}
for kv in string.split("|"):
k, v = kv.split(":")
if v.isdigit():
v = int(v)
d[k] = v
print d
输出:{'k3': 3, 'k2': 2, 'k1': 1}
注意:用key取value 层层递进
版权声明:本文为博主原创文章,转载请附上博文链接!