谭子python学习笔记--字典

来源:互联网 发布:linux 复位USB 编辑:程序博客网 时间:2024/05/22 02:17

  • 字典
    • 常用列表操作
    • 字典使用注意事项
    • 创建字典的方法
    • 字典解析

字典

  • 通过键而不是偏移量来读取
  • 任意对象的无序集合
  • 可变长,异构,任意嵌套
  • 属于可变的映射类型
  • 对象引用表(散列表即哈希表)

常用列表操作

操作 解释 备注 D = {} 空字典 D = {‘spam’:2,’eggs’:3} 两项目字典 D = {‘food’:{‘ham’:1,’egg’:2}} 嵌套 D = dict.fromkeys([‘a’,’b’]) 构造字典,键值为列表[‘a’,’b’]中的值 D = dict.fromkeys([‘a’,’b’])
print D
结果为
{‘a’: None, ‘b’: None} D[‘egg’]
D[‘egg’][‘ham’] 以键作为索引运算 ‘eggs’ in D 成员关系,存在测试 D.keys() 键 D.values() 值 D.items 键+值 D.copy() 副本 D.get(key) 获取键key的值,当key不存在时返回默认值None D.update(D2) 组合 d1 = {‘1’:’www’,’2’:’eee’}
d2 = {‘3’:’ccc’,’4’:’vff’}
d1.update(d2)
print d1
结果
{‘1’: ‘www’, ‘3’: ‘ccc’, ‘2’: ‘eee’, ‘4’: ‘vff’} D.pop(key) 返回键key的值,并删除 len(D) 长度 D[key] = value 新增/修改键 set(D.keys()) 字典键集合 set(D1.keys()) & set(D2.keys()) D1和D2相同键列表 d1 = {‘1’:’www’,’2’:’eee’}
d2 = {‘3’:’ccc’,’4’:’vff’}
d1.update(d2)
print d1
print set(d1.keys())
print set(d1.keys()) & set(d2.keys())
结果
{‘1’: ‘www’, ‘3’: ‘ccc’, ‘2’: ‘eee’, ‘4’: ‘vff’}
set([‘1’, ‘3’, ‘2’, ‘4’])
set([‘3’, ‘4’]) D={x:x*2 for x in range(10)} 字典解析(python3.0) D={x:x*2 for x in range(10)}
print D
{0: 0, 1: 2, 2: 4, 3: 6, 4: 8, 5: 10, 6: 12, 7: 14, 8: 16, 9: 18}

字典使用注意事项

  • 序列运算无效
  • 对新索引赋值会新增该项
  • 键不一定总是字符串(可以是整形、元组、类实例等)
d = {}d[99] = "hell0"

用于稀疏数据结构

>>> Matrix ={}>>> Matrix[(2,3,4)] = 88>>> Matrix[(7,8,9)] = 99>>> Matrix{(2, 3, 4): 88, (7, 8, 9): 99}>>> x=2;y=3;z=4>>> Matrix[(x,y,z)]88

创建字典的方法

>>> {'name':'mel','age':45}{'age': 45, 'name': 'mel'}
>>> D={}>>> D['name'] = 'mel'>>> D['age'] = 45>>> D{'age': 45, 'name': 'mel'}
>>> dict(name='mel',age=45){'age': 45, 'name': 'mel'}>>> dict([('name','mel'),('age',45)]){'age': 45, 'name': 'mel'}
>>> dict.fromkeys(['a','b'],'lala'){'a': 'lala', 'b': 'lala'}

字典解析

>>> D={k:v for (k,v) in zip(['a','b','c'],[1,2,3])}>>> D{'a': 1, 'c': 3, 'b': 2}
>>> D = {c.lower():c + '!' for c in ['SPAM','ENGS','HAM']}>>> D{'engs': 'ENGS!', 'ham': 'HAM!', 'spam': 'SPAM!'}