Python数据结构之——字典

字典

  • 字典中的键是唯一的,而值不是唯一的,空字典--->{ }

创建字典


users = {'Coder' : 111,'Info' : 222} # 直接赋值创建的方式

lst = [('Coder','Info'),(111,222)]

users = dict(lst)  # 通过函数创建一个字典
users = dict(Coder = 111, Info = 222)

字典的基本操作

  1. len(dic) : 返回字典中键值对的个数
  2. dic[key] : 返回字典中key所对应的值
  3. dic[key] = value :  将value 与字典中的key关联
  4. del dic[key] : 删除字典中的key项
  5. key in dic : 检查字典中是否包含key

字典格式化字符串

  1. XXX%(key)sYYY   %  dic


users = {'Coder' : 111, 'Info' : 222}
print 'Hi, %(Coder)s.' % users  # result: Hi, 111.


字典的方法

  1. dic.clear() 用于清除原始字典中的所有数据
    x = {}
    x['key'] = 'value'
    y = x
    
    print x # result: {'key' : 'value'}
    print y # result: {'key' : 'value'}
    
    # x = {}  # 这里只是更改了x所对应的value
    # print x 
    # result: {}
    
    # print y 
    # result: {'key' : 'value'}
    
    #通过clear清楚原始字典
    x.clear()
    
    print x # reslut: {}
    
    print y # reslut: {}
  2. y = x.copy() 将x字典的映射指向y,这是x,y引用同一个原始字典,x/y只要其中一个值更改了,另外一个也随之变化。
    x = {'name':'CoderInfo','ID':[12,13]}
    
    y = x.copy()
    
    x['name'] = 'test'
    print x # result: {'name':'test','ID':[12,13]}
    print y # result: {'name':'CoderInfo','ID':[12,13]}   可以看出 如果替换字典中的值,x,y互相没有影响,也就是说原始字典没有被更改。
    
    x['Age'].remove(12)
    print x # result: {'name':'CoderInfo','Age':[13]}
    print y # result: {'name':'CoderInfo','Age':[13]}   但是如果是更新字典中的值,x,y就互相影响了,也就是说原始字典被更改了
    
    这里就需要使用deepcopy了来解决原始字典更改的难题了,引入deepcopy即可
    from copy import deepcopy
  3. dic.fromkeys(lst)  : 通过lst这个列表生成以列表元素为key的默认None为值的字典。
    lst = ['name','age']
    
    print {}.fromkeys(lst) # result: {'age': None, 'name': None} 生成默认值为None的字典
    
    print {}.fromkeys(lst,'Init') # result: {'age': 'Init', 'name': 'Init'} 自己指定默认值



  4. dic.get(key) : 通过get获取字典中的值比dic[key]的好处是如果字典中没有这个key,那么我们get会返回None,而dic[key]会直接报错

    print {}.get('key') # result: None
    
    print {}['key']  # result: 程序报错


  5. dic.has_key(key) : 检查dic中是否有key这个键,与 key in dic 表达式完全等同

  6. dic.items() : 将dic中的键值对按照列表的方式排列并且返回

    dic = {'name':'CoderInfo','age':26,'Sex':'Male'}
    
    print dic.items() # result: [('age', 26), ('name', 'CoderInfo'), ('Sex', 'Male')]


  7. dic.iteritems() : 与上面的基本一样只不过返回的不是一个列表,而是一个iterator对象
  8. dic.keys() : 以列表的形式返回dic中所有的key
  9. dic.iterkeys() : 以iterator对象的形式反回dic中所有的key
  10. dic.values() : 以列表的形式返回dic中所有的value
  11. dic.itervalues() : 以iterator对象的形式反回dic中所有的value
  12. dic.pop(key) :将key所对应的值返回,并且从dic中移除key这对键值对
    dic = {'name':'CoderInfo','age':26,'Sex':'Male'}
    
    print dic.pop('name') # result: CoderInfo 返回值
    print dic # result: {'name':'CoderInfo','age':26,'Sex':'Male'} 发现没有?key为name的键值对被移除了
  13. dic.popitem() : 随机去除dic中键值对,并且返回这个键值对的值
  14. dic.setdefault('name','new') : 如果dic中有name这个键,那么则返回dic中name对应的值,如果没有则返回new
  15. dic.update(another_dic) : 用一个字典去更形另外一个字典
    dic = {'name':'CoderInfo','age':26,'Sex':'Male'}
    
    print dic # result: {'age': 26, 'name': 'CoderInfo', 'Sex': 'Male'}
    ano = {'name': 'test'}
    
    dic.update(ano)
    
    print dic # result: {'age': 26, 'name': 'test', 'Sex': 'Male'}




你可能感兴趣的:(Python数据结构之——字典)