• Python 字典


    Python中的字典与C++中的map非常类似,即按照Key-value的模式进行存储,不过功能更加强大。

    一、字典的创建

    字典创建可以用大括号来直接进行,也可以对其他序列用dict()函数来进行:

    a = [('name', 'lustar'), ('age', 42)]
    dic1 = dict(a)
    dic2 = dict(name='lustar', age=42)#dic1 dic2是相同的
    print dic1['age'], dic2['age']
    
    42 42

    二、字典的基本操作

    字典有一些类似于序列的操作,也有一些不同之处。于C++中的map<type>类似,可以添加删除键,以及通过直接赋值增加新的键:

    a = [('name', 'lustar'), ('age', 42)]
    dic = dict(a)
    dic['age'] = 22  # change value
    print len(dic)  # length of a
    del dic['age']  # delete key:age
    print 'age' in dic  # check if age is in dic
    dic['age'] = 22  # add 'age-22' to dic
    print 'age' in dic

    三、字典的方法

    (1)clear方法会清除所有的字典项,返回None。

    dic = dict([('name', 'lustar'), ('age', 42)])
    print dic.clear()
    print dic
    None
    {}

    (2)copy方法。该方法会返回一个新的字典,不过一定要注意的是,执行的是浅拷贝。也就是说,如果对copy后的对象的value执行修改(原地修改),原来的字典对象也会受到影响;替换操作不会使得原对象受到影响。

    dic = dict([('name', ['lustar']), ('age', 42)])
    dic_copy = dic.copy()
    dic['name'] = 'LL'
    print dic == dic_copy
    
    False #  没有影响到原来的对象
    dic_copy['name'].append('lulu')
    print dic == dic_copy
    
    True #  影响到了原来的对象

    (3)fromkey方法为所有的键新建一个字典,值全部为None。

    (4)get、has_key方法。get比较宽松,如果键存在,返回对应值;不存在则返回None,不产生异常。has_key与key in dict类似。

    dic = dict([('name', 'lustar'), ('age', 42)])
    print dic.get('height'), dic.get('name')
    print dic.has_key('height'), dic.has_key('name')

      None lustar
      False True

     (5)items/iteritems,keys/iterkeys,values/itervalues方法。顾名思义,items把所有的键值对以列表的形式返回,keys和values则以列表形式返回键/值,iter对应返回类型为迭代器。

    dic = dict([('name', 'lustar'), ('age', 42)])
    iter1 = dic.iteritems()
    item1 = dic.items()
    print item1
    for i in iter1:
        print i
    
    [('age', 42), ('name', 'lustar')]
    ('age', 42)
    ('name', 'lustar')

    (6)pop和popitem方法。pop删除一个键值对,并返回值;popitem则弹出一个键值对并返回。

    dic = dict([('name', 'lustar'), ('age', 42)])
    print dic.pop('name') # 移除'name'-'lustar',返回lustar
    print dic
    print dic.popitem()# 移除'age'-42并返回
    print dic
    
    lustar
    {'age': 42}
    ('age', 42)
    {}
  • 相关阅读:
    CF997C Sky Full of Stars
    LOJ6160 二分图染色
    AT4996 [AGC034F] RNG and XOR
    AT4119 [ARC096C] Everything on It
    20200701线性代数概率期望练习
    SNOI2020 LOJ3326 字符串
    SNOI2020 LOJ3323 生成树
    SNOI2020 LOJ3324 取石子
    Gym-102576A Bags of Candies
    Gym-102576H Lighthouses
  • 原文地址:https://www.cnblogs.com/lustar/p/7801481.html
Copyright © 2020-2023  润新知