zoukankan      html  css  js  c++  java
  • Day-05 基础数据类型字典dict

    一、认识字典
    字典是成对的保存数据,以key:value的形式保存,用{}表示,每一项内容都是key:value,每项数据之间用逗号隔开
    字典中的key是不能重复的。存储是依靠着key来计算的。
    切记:在字典中存储的key-value中的key必须是可hash的,如果你搞不懂什么是哈希,暂时可以这样记,可以改变的都是不可哈希的,那么可哈希就意味着不可变,这个是为了能准确的计算内存地址而规定的。
    已知的可哈希(不可变)的数据类型:str、int、tuple、bool
    不可哈希(可变)的数据类型:list、dict、set
    二、字典的增删改查
    1、增加
    dic[key] = value
    setdefault(key, value)
    1 dic = {}
    2 dic['name'] = '周润发' # 如果dict中没有出现这个key, 就会新增⼀个key-value的组合进dict
    3 dic['age'] = 18
    4 print(dic)
    5 # 如果dict中没有出现过这个key-value. 可以通过setdefault设置默认值
    6 dic.setdefault('李嘉诚') # 也可以往⾥⾯设置值.
    7 dic.setdefault("李嘉诚", "房地产") # 如果dict中已经存在了. 那么setdefault将不会起作⽤
    8 print(dic)
    字典增加操作
      2、删除
      pop(key)
      popitem()
      del dic[key]
      clear()
    1 ret = dic.pop("jay")
    2 print(ret)
    3 del dic["jay"]
    4 print(dic)
    5 # 随机删除.
    6 ret = dic.popitem()
    7 # 清空字典中的所有内容
    8 dic.clear()
    字典删除操作
      3、修改
      dic[key] = value
      dic1.update(dict2)
      
    1 dic = {"id": 123, "name": 'sylar', "age": 18}
    2 dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
    3 dic.update(dic1) # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增.
    4 print(dic)
    5 print(dic1)
    字典修改操作
      4、查询
      dic[key] 可能会报错
      dic.get(key)
      dic.setdefault()
     1 print(dic['name'])
     2 # print(dic['sylar']) # 报错
     3 print(dic.get("ok"))
     4 print(dic.get("sylar")) # None
     5 print(dic.get("sylar", "⽜B")) # ⽜B
     6 #流程:1. 先检测是否存在key,xxxx
     7 #     2. 根据你给的key把value查询出来
     8 #setdefault() 新增
     9 dic = {"jay":"周杰伦"}
    10 ret = dic.setdefault("jay_jj","林俊杰")
    11 print(dic, ret)
    字典查询操作
    三、常见操作
    keys() key的集合
    values() value的集合
    items() 键值对的集合(key,value)
     1 dic = {"id": 123, "name": 'sylar', "age": 18, "ok": "科⽐"}
     2 print(dic.keys()) # dict_keys(['id', 'name', 'age', 'ok']) 不⽤管它是什么.当成list来⽤就⾏
     3 for key in dic.keys():
     4     print(key)
     5     print(dic.values()) # dict_values([123, 'sylar', 18, '科⽐']) ⼀样. 也当list来⽤
     6 for value in dic.values():
     7     print(value)
     8     print(dic.items()) # dict_items([('id', 123), ('name', 'sylar'), ('age',18), ('ok', '科⽐')]) 这个东⻄也是list. 只不过list中装的是tuple
     9 for key, value in dic.items(): # ?? 这个是解构
    10     print(key, value)
    11 # 解构
    12 a, b = 1, 2
    13 print(a, b)
    14 (c, d) = 3, 4
    15 print(c, d)
    16 e, f = [1, 2, 3] # 解构的时候注意数量必须匹配
    17 print(e, f)
    四、字符串嵌套
    # 字典的嵌套
    dic1 = {
     "name": "汪峰",
     "age": 18,
     "wife": {
     "name": '章⼦怡',
     "age": 28
     },
     "children": ['第⼀个⽑孩⼦', '第⼆个⽑孩⼦'],
     "desc": '峰哥不会告我吧. 没关系. 我想上头条的'
    }
    print(dic1.get("wife").get("name"))
    print(dic1.get("children"))
    print(dic1.get("children")[1])
  • 相关阅读:
    Java IO: 读取classpath资源
    Java IO: Reader和Writer
    Java IO: 读写zip文件
    OpenFlow运行机制总结
    OpenFlow流表概述
    Java日志系统(学习总结)
    卷积神经网络重要回顾
    Java Servlet学习笔记
    fragment实例
    Fragment应用
  • 原文地址:https://www.cnblogs.com/minusone/p/9836746.html
Copyright © 2011-2022 走看看