zoukankan      html  css  js  c++  java
  • 005 dict

    一、字典
    1.认识字典
    用{}表示,由键值对组成,{"key":"value"}
    每一项内容为: "key":"value", 每项之间用,隔开,
    key不可重复,重复的话,后面的会覆盖前面的value, 存储依靠key来计算
    字典是使用hash算法来计算key的哈希值,使用哈希值来存储数据。

    哈希算法得到一个无序的数,且唯一的
    字典中的key必须是可哈希的,不可变的就是可哈希

    不可变: int, str, tuple, bool
        ** 特例 **
      如果dict在遍历的过程中,进行了改变操作,会报错,
        解决方法,
        1.用list(dic())或set(dic())
        2.用赋值给新的字典

    可变: list, dict,set
    dic = {123: 456, True: 999, "id", "sylar"}
    print(dic[123]) # 打印456
    print(di[True]) # 打印 999
    # 不合法的示例
    # dic = {[1, 2, 3]: "周杰伦"} # list是可变的,不能作为key
    2.增删改查
    1、增加
    * dic[key] = value # 新的value覆盖旧的,若原先没有则新增一个key-value,
    * dic.setdefault(key,value2) #通过setdefault设置默认值,若已存在,则setdefault不起作用
    增加一个键值对
    * value还可以用嵌套input来增加,可以随心所欲输入

    2、删除
    * dic.pop(key) # 指定删除
    * dic.popitem() # 随机删除一个
    * del dic[key] # 指定删除
    * clear() # 清除
    3、改
    * dic[key] = value # 已有则修改对应的值,没有则新增键值对
    * dic.update(dic1) # 把dic1中的内容更新到dic中,若重名则替换,若不存在则新增
    4、查
    * dic[key] # 若key不存在,会报错;但因为简单所以最常用
    * dic.get(key) # 若kye不存在,则返回None,还可以直接输入键值对,如下
    dic.get(key, value) # 原有则不变,输出,若没有,则新增输出
    5、相关操作
    * dic.keys() # 所有的key输出
    * dic.value() # 所有的value 输出
    * dic.items() # 所有的键值对输出
    3、字典的迭代
    方案一、
    for k, v in dic.items():
    k, v # 输出所有的键值对

    方案二、
    for k in dic:
    print(k) # 输出所有的key
    dic[k] # 输出所有的value
    4、解构、解包
    a, b = 1, 2
    print(a, b) # a = 1, b = 2 # python中所特有的
    a, b = b, a
    print(a, b) # a = 2, b = 1
    5、字典嵌套
    * 字典里面可以嵌套字典、元组、列表等等,无限嵌套
  • 相关阅读:
    设计模式
    软件的架构与设计模式之经典架构模式简介
    Rose与PowerDesigner:两款建模工具的对比
    C#中Socket多线程编程实例 [转载]
    C#串口控制
    .NET反射、委托技术与设计模式
    求多个数的质因子
    求单个数的欧拉函数
    基本欧拉函数
    hdu 2157(矩阵的快速幂)
  • 原文地址:https://www.cnblogs.com/yipianshuying/p/9839146.html
Copyright © 2011-2022 走看看