目录

Python字典学习笔记(持续更新)

  • 更多分享:http://www.catbro.cn

    • 字典是Python中唯一内建的映射类型,字典中的值没有特殊的顺序,但是都存储在一个特定的键(Key)里面,键可以是数字、字符串甚至元组

字典构造方法

  • 1、dict函数创建字典

      d = dict([('name','xiaoming'),('age',10)]) 
      d = dict(name='xiaoming',age=10)
      d = dict()
    

字典的基本操作

  • 字典的基本行为在很多方面与序列类型:
  • 1、len(d):返回d中项(键值对)的数量
  • 2、d[k]:返回关联到键k上的值
  • 3、d[k]=v:将值v关联到键k上
  • 4、del d[k]:删除键为k的项
  • 5、k in d:检查d中是否有含有键为k的项

字典的格式化输出

  • %(key)

字典的方法

  • 1、clear:clear方法清除字典中所有的项

  • 2、copy:返回一个具有相同键值对的新字典(浅复制)

      d1 = {'name':'admin','skill':['java','C','Python']}
      d2 = d1.copy();
      d2['name'] = 'user';
      del d2['skill'][0];
      print(d1) : {'name': 'admin', 'skill': ['C', 'Python']}
      print(d2) :{'name': 'user', 'skill': ['C', 'Python']}
      可以看到,当替换副本中的值时,原字典不受影响,如果替换的值为对象时,就会受影响了,应为拷贝时为前拷贝,值并没有拷贝,而是直接使用。
    
  • 避免问题方法:

  • 1、使用深复制(deep copy),使用copy模块的deepcopy函数实现

      from copy import deepcopy;
      d1 = {'name':'admin','skill':['java','C','Python']}
      d2 = deepcopy(d1);
      d2['name'] = 'user';
      del d2['skill'][0];
      print(d1) : {'name': 'admin', 'skill': ['java', 'C', 'Python']}
      print(d2) : {'name': 'user', 'skill': ['C', 'Python']}
    
  • 3、fromkeys:使用给定的key建立新的字典,但是对应的值均为None

      d = dict().fromkeys(['name','skill'])
      print(d) : {'name': None, 'skill': None}
    
  • 4、根据key访问字典中的项

  • 使用d[key]也可以访问字典中的项,当key不存在时,会报错

  • 使用d.get(key) 时如果项不存在,会返回None

  • d.get(key,默认值),其提供了在项不存在时返回默认值的可以参数

  • 5、items:返回项的迭代器。可用for进行遍历

      d1 = {'name':'admin','skill':'java'}
      print(d1.items()) : dict_items([('name', 'admin'), ('skill', 'java')])
    
  • 6、items:返回key值迭代器。可用for进行遍历

      d1 = {'name':'admin','skill':'java'}
      print(d1.keys()) : dict_keys(['name', 'skill'])
    
  • 7、pop:获取给定key的值,并将该项从字典中移除

  • 8、popitem:类似list.pop(),但是字典弹出的项是随机的。

  • 9、setdefault(key,defaultValue):如果key不存在,创建该项并设置值为默认值,并返回,如果key存在,则返回值

      d1 = dict();
      print(d1); : {}
      d1.setdefault('name','me');
      print(d1); : {'name': 'me'}
    
  • 10、update:用一个字典更新另外一个字典,不存在的会创建并添加,存在的则直接替换

      d1 = {'name':'me'}
      d2={'name':'you','age':18}
      d1.update(d2)
      print(d1); : {'name': 'you', 'age': 18}
    
  • 11、values:返回values值迭代器。可用for进行遍历

      d1 = {'name':'admin','skill':'java'}
      print(d1.values()) : dict_values(['admin', 'java'])