Python中的字典(一)

字典是另一种可变容器模型,且可存储任意类型对象。自描述型数据结构

  • 字典是可变类型,
  • 字典中的数据是无序的
  • 一个字典条目的语法是 键:值,键一般是唯一的,如果重复最后的一个键值对会替换前面的,值不需要唯一,
  • 值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组
  • 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  层层递进

猜你喜欢

转载自blog.csdn.net/xxlovesht/article/details/80401634
今日推荐