Python数据结构之——字典

来源:互联网 发布:js获取字符串下标 编辑:程序博客网 时间:2024/05/22 13:43

字典

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

创建字典


?
1
2
3
4
5
6
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


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


字典的方法

  1. dic.clear() 用于清除原始字典中的所有数据
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    x={}
    x['key']='value'
    y=x
     
    printx # result: {'key' : 'value'}
    printy # result: {'key' : 'value'}
     
    # x = {}  # 这里只是更改了x所对应的value
    # print x
    # result: {}
     
    # print y
    # result: {'key' : 'value'}
     
    #通过clear清楚原始字典
    x.clear()
     
    printx # reslut: {}
     
    printy # reslut: {}
  2. y = x.copy() 将x字典的映射指向y,这是x,y引用同一个原始字典,x/y只要其中一个值更改了,另外一个也随之变化。
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    x={'name':'CoderInfo','ID':[12,13]}
     
    y=x.copy()
     
    x['name']='test'
    printx # result: {'name':'test','<span></span>ID':[12,13]}
    printy # result: {'name':'CoderInfo','ID':[12,13]}   可以看出 如果替换字典中的值,x,y互相没有影响,也就是说原始字典没有被更改。
     
    x['Age'].remove(12)
    printx # result: {'name':'CoderInfo','Age':[13]}
    printy # result: {'name':'CoderInfo','Age':[13]}   但是如果是更新字典中的值,x,y就互相影响了,也就是说原始字典被更改了
     
    这里就需要使用deepcopy了来解决原始字典更改的难题了,引入deepcopy即可
    fromcopy importdeepcopy
  3. dic.fromkeys(lst)  : 通过lst这个列表生成以列表元素为key的默认None为值的字典。
    ?
    1
    2
    3
    4
    5
    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]会直接报错

    ?
    1
    2
    3
    print{}.get('key')# result: None
     
    print{}['key'# result: 程序报错


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

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

    ?
    1
    2
    3
    dic={'name':'CoderInfo','age':26,'Sex':'Male'}
     
    printdic.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这对键值对
    ?
    1
    2
    3
    4
    dic={'name':'CoderInfo','age':26,'Sex':'Male'}
     
    printdic.pop('name')# result: CoderInfo 返回值
    printdic # 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) : 用一个字典去更形另外一个字典
    ?
    1
    2
    3
    4
    5
    6
    7
    8
    dic={'name':'CoderInfo','age':26,'Sex':'Male'}
     
    printdic # result: {'age': 26, 'name': 'CoderInfo', 'Sex': 'Male'}
    ano={'name':'test'}
     
    dic.update(ano)
     
    printdic # result: {'age': 26, 'name': 'test', 'Sex': 'Male'}

0 0