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

本贴最后更新于 2690 天前,其中的信息可能已经天翻地覆
  • 字典是 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'])
    
  • 笔记

    好记性不如烂笔头。

    308 引用 • 793 回帖
  • Python

    Python 是一种面向对象、直译式电脑编程语言,具有近二十年的发展历史,成熟且稳定。它包含了一组完善而且容易理解的标准库,能够轻松完成很多常见的任务。它的语法简捷和清晰,尽量使用无异义的英语单词,与其它大多数程序设计语言使用大括号不一样,它使用缩进来定义语句块。

    545 引用 • 672 回帖

相关帖子

欢迎来到这里!

我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。

注册 关于
请输入回帖内容 ...