zoukankan      html  css  js  c++  java
  • Python-字典(dict)

    什么是字典?

    字典是另一种可变容器模型,且可存储任意类型对象。
    典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
    格式如下:
    d = {key1 : value1, key2 : value2 }

    键必须是唯一的,但值则不必。
    值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

    注意:
    (1). 同一个键不能出现两次,如果一个键被赋值两次,后边的键值会被记下,而前边的键值会被覆盖
    (2). 键必须不可变,所以可以用数字,字符串或元组充当,列表不可以

    创建字典的几种方式:

    # 方式1. 创建一个空字典
    dic = {}
    
    # 方式2. 通过赋值创建
    dic = {"one":"小明","two":"小李","three":"小马"}
    print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}
    
    # 方式3  通过dict()函数和关键字参数创建
    dic = dict(one="小明",two="小李",three="小马")
    print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}
    
    # 方式4   通过二元列表创建
    dic = [("one","小明"),("two","小李"),("three","小马")]
    print(dic)        # [('one', '小明'), ('two', '小李'), ('three', '小马')]
    
    # 方式5   dict和zip结合创建
    dic = dict(zip(["one","two","three"],["小明","小李","小马"]))
    print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}
    
    # 方式6 :     字典推导式
    dic = {str(i) : i*2 for i in range(9)}
    print(dic)      # {'0': 0, '1': 2, '2': 4, '3': 6, '4': 8, '5': 10, '6': 12, '7': 14, '8': 16}
    
    # 方式7       通过dict.fromkeys()创建
    dic = dict.fromkeys("abcd","小明")
    print(dic)      # {'a': '小明', 'b': '小明', 'c': '小明', 'd': '小明'}
    
    # 方式8       通过切片拿值创建
    list = ["one","小明","two","小李","three","小马"]
    dic = dict(zip(list[::2],list[1::2]))
    print(dic)      # {'one': '小明', 'two': '小李', 'three': '小马'}

    字典的常用方法

    增:

    # 1). 直接增加
    dict = {"name":"小明","age":18}
    dict["height"] = 180    # 如若字典内没有'height'这个键,则自动增加键值对
    print(dict)         # {'name': '小明', 'age': 18, 'height': 180}
    
    # 2). 通过'setdefault()'增加 dict = {"name":"小明","age":18} dict.setdefault("height",180) # 如果没有该键,则自动增加键值对 print(dict) # {'name': '小明', 'age': 18, 'height': 180} dict.setdefault("name","小马") # 如果有该键,则不变 print(dict) # {'name': '小明', 'age': 18, 'height': 180} # 返回返回值: re = dict.setdefault("name") # 有该键并且有值的情况下,返回值 print(re) # 小明

    删:

    # 1). pop()通过key删除字典的键值对,有返回值,可设置返回值
    dict = {"name":"小明","age":18}
    re = dict.pop("name")
    print(re)       # 小明
    re1 = dict.pop("name","小马")     # 设置返回值
    print(re1)      # 小马
    
    # 2). popitem(): 删除最后一个键值对,有返回值 dict = {"name":"小明","age":18} print(dict) # {'name': '小明', 'age': 18} re = dict.popitem() print(re) # ('age', 18)
    # 3). clear(): 清空字典 dict = {"name":"小明","age":18} print(dict) # {'name': '小明', 'age': 18} dict.clear() print(dict) # {} # 删除整个字典(返回变量类型): del dict print(dict) # <class 'dict'>

    改:

    # 1). 通过键值对直接更改
    dict = {"name":"小明","age":18}
    print(dict)     # {'name': '小明', 'age': 18}
    dict["name"] = "小马"
    print(dict)     # {'name': '小马', 'age': 18}
    
    
    # 2). update(): 可通过键对值进行更改,如若没有该键,则总动添加
    dict = {"name":"小明","age":18}
    print(dict)     # {'name': '小明', 'age': 18}
    dict.update(name="小马",age=18)
    print(dict)     # {'name': '小马', 'age': 18}
    
    dict.update([("height",18),("weight",120)])
    print(dict)     # {'name': '小马', 'age': 18, 'height': 18, 'weight': 120}
    
    dict1 = {"name": "小明", "age": 18, "height": 18, "weight": 120}
    dict2 = {"name":"小马","age":17,"hobby":"play a game"}
    print(dict1)    # {'name': '小明', 'age': 18, 'height': 18, 'weight': 120}
    print(dict2)    # {'name': '小马', 'age': 17, 'hobby': 'play a game'}
    dict1.update(dict2)     # 使用'dict2'对'dict1'进行更改
    print(dict1)    # {'name': '小马', 'age': 17, 'height': 18, 'weight': 120, 'hobby': 'play a game'}

    查:

    # 1). 通过键查询(如若没有该键,则直接报错)
    dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
    print(dict["name"])     # 小马
    
    # 2). get() : 通过键查询值,有返回值。如果没有该键,则返回None
    dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
    re = dict.get("name")
    print(re)       # 小马
    re1 = dict.get("name1")
    print(re1)      # None
    
    # 3). keys() : 返回字典内所有的键
    dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
    print(dict.keys())  # dict_keys(['name', 'age', 'height', 'weight', 'hobby'])
    
    # 4). values() : 返回字典内所有的值
    dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
    print(dict.values())    # dict_values(['小马', 17, 18, 120, 'play a game'])
    
    # 5). items() : 返回字典内所有的键值对
    dict = {"name": "小马", "age": 17, "height": 18, "weight": 120, "hobby": "play a game"}
    print(dict.items())     # dict_items([('name', '小马'), ('age', 17), ('height', 18), ('weight', 120), ('hobby', 'play a game')])
  • 相关阅读:
    GeoServer发布Shapfile、PostGIS数据
    Geoserver+Openlayers+MySQL设计思想,GeoServer服务器搭建(Docker构建镜像)
    Linux 输入输出重定向, &>file, 2>&1, 1>&2
    Git常用命令
    Java 操作 HBase 教程
    NATAPP--实现SSH内网穿透
    Spring boot banner
    ingress 密码验证
    rook 记录
    容器网络之网桥
  • 原文地址:https://www.cnblogs.com/mamouren/p/13289600.html
Copyright © 2011-2022 走看看