zoukankan      html  css  js  c++  java
  • 【Rollo的Python之路】Python:字典的学习笔记

    Dictionary

    字典是另一种可变容器模型,且可存储任意类型对象。

    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1)
    print(dict2)
    
    #执行结果:
    
    {'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}
    {'num1': 1, 'num2': 2, 'num3': 3}

      注意事项:

    1.0 Key必须是唯一的,不变的,可以是数字,字符串,元组,但是不是能列表!!!(列表是可变的)

    2.0 Values是可变的,所有的类型的数据都可以,当然也可以是列表!!!

    3.0 Dictionary 是无序的,因为它是按照hash来存储的,和存储的数据结构有关,所以不能用切片来处理

    4.0 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住

      字典的查找与修改:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1["name"])
    print(dict2["num2"])
    
    print(dict1)
    print(dict2)
    
    #执行结果:
    
    rollo
    2
    {'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}
    {'num1': 1, 'num2': 2, 'num3': 3}

    如果用字典里没有的键访问数据,会输出错误如下:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1["name"])
    print(dict2["num4"])
    
    #执行结果:
    
    rollo
    Traceback (most recent call last):
      File "E:/python_work/fullstack_s6/week2/day06/dictionary.py", line 10, in <module>
        print(dict2["num4"])
    KeyError: 'num4'

    查找所有的键:dict.keys()

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1.keys())  #所有键
    print(dict2.keys())
    
    print(list(dict1.keys())) #所有键转化为列表
    print(list(dict2.keys()))
    
    print(tuple(dict1.keys())) #所有键转化为元组
    print(tuple(dict2.keys()))
    
    #执行结果:
    
    dict_keys(['name', 'age', 'work', 'hobby'])
    dict_keys(['num1', 'num2', 'num3'])
    ['name', 'age', 'work', 'hobby']
    ['num1', 'num2', 'num3']
    ('name', 'age', 'work', 'hobby')
    ('num1', 'num2', 'num3')

    查找所有的值:dict.values()

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1.values())  #所有值
    print(dict2.values())
    
    print(list(dict1.values())) #所有值转化为列表
    print(list(dict2.values()))
    
    print(tuple(dict1.values())) #所有值转化为元组
    print(tuple(dict2.values()))
    
    #执行结果:
    
    dict_values(['rollo', 25, 'CEO', ['music', 'reading', 'python']])
    dict_values([1, 2, 3])
    ['rollo', 25, 'CEO', ['music', 'reading', 'python']]
    [1, 2, 3]
    ('rollo', 25, 'CEO', ['music', 'reading', 'python'])
    (1, 2, 3)

    查找所有的键值对:dict.items()

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    print(dict1.items())  #所有的键值对
    print(dict2.items())
    
    print(list(dict1.items())) #所有键值对转化为列表
    print(list(dict2.items()))
    
    print(tuple(dict1.items())) #所有键值对转化为元组
    print(tuple(dict2.items()))
    
    #执行结果:
    
    dict_items([('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python'])])
    dict_items([('num1', 1), ('num2', 2), ('num3', 3)])
    [('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python'])]
    [('num1', 1), ('num2', 2), ('num3', 3)]
    (('name', 'rollo'), ('age', 25), ('work', 'CEO'), ('hobby', ['music', 'reading', 'python']))
    (('num1', 1), ('num2', 2), ('num3', 3))

      update方法:原来字典没有的key/value,直接加到原字典;原来的key,value会被更新

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}
    
    dict1.update(dict2)
    print(dict1)
    
    #执行结果:
    
    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}
    
    dict1.update(dict2)
    print(dict1)

       dict.fromkeys() 方法来创建字典:

    fromkeys() 方法语法:

    dict.fromkeys(seq[, value])
    参数
    seq -- 字典键值列表。
    value -- 可选参数, 设置键序列(seq)对应的值,默认为 None。
    abc = ("a","b","c")
    dict3 = dict.fromkeys(abc)
    dict4 = dict.fromkeys(abc,50)
    print(dict3)
    print(dict4)
    
    #执行结果:
    {'a': None, 'b': None, 'c': None}
    {'a': 50, 'b': 50, 'c': 50}

      字典的get()方法:

    get()方法是用key找出相关的值,返回。如果key不存在,返回默认值。

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}
    
    a = dict1.get("name")
    b = dict1.get("kkk",123456)
    
    print(a)
    print(b)
    print(dict1)
    
    #执行结果:
    
    rollo
    123456
    {'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}

      pop() 方法:

    Python 字典 pop() 方法删除字典给定键 key 所对应的值,返回值为被删除的值。key值必须给出。 否则,返回default值

    popitem(),随机删除一个值。Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,"name":"test"}
    
    a1 = dict1.pop("name")
    b1 = dict2.pop("num5",123) #必须要默认值,不然没有KEY的,就会报错
    
    print(a1)
    print(b1)
    print(dict1)
    
    #执行结果:
    
    rollo
    123
    {'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python']}

      修改字典:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    dict1["name"] = "google"
    dict1["work"] = "manager"
    dict2["num3"] = "Notonly"
    
    print(dict1)
    print(dict2)
    
    #执行结果:
    {'name': 'google', 'age': 25, 'work': 'manager', 'hobby': ['music', 'reading', 'python']}
    {'num1': 1, 'num2': 2, 'num3': 'Notonly'}

    如果原字典没有Key,就会把新加在原来字典后面:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    dict1["name1"] = "google"
    dict1["work1"] = "manager"
    dict2["num4"] = "Notonly"
    
    print(dict1)
    print(dict2)
    
    #执行结果:
    
    {'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python'], 'name1': 'google', 'work1': 'manager'}
    {'num1': 1, 'num2': 2, 'num3': 3, 'num4': 'Notonly'}

    dict.setdefault(key,None) 

    如果有相关的KEY,就返回来的值,

    如果没有相关的KEY,就会在原字典加上默认的values,返回默认的值,

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    a1 = dict1.setdefault("age",36)
    a2 = dict1.setdefault("travel","USA")
    
    b1 = dict2.setdefault("num1",20)
    b2 = dict2.setdefault("num5",90)
    
    print(a1)
    print(a2)
    print(b1)
    print(b2)
    print(dict1)
    print(dict2)
    
    #执行结果:
    
    25 #有age,返回age原来的25
    USA #没有travel,返回默认值 USA
    1 #有num1,返回num1原来的1
    90 #没有num5,返回默认值90
    {'name': 'rollo', 'age': 25, 'work': 'CEO', 'hobby': ['music', 'reading', 'python'], 'travel': 'USA'} #没有travel,返回默认值 USA,同是在原字典上加上这个键值对
    
    {'num1': 1, 'num2': 2, 'num3': 3, 'num5': 90}#没有num5,返回默认值90,同是在原字典上加上这个键值对

      删除字典元素:

    del,clear()方法:

    dict1 = {"name":"rollo","age":25,"work":"CEO","hobby":["music","reading","python"]}
    dict2= {"num1":1,"num2":2,"num3":3,}
    
    del dict1["hobby"] #删除hobby这组
    print(dict1)
    dict2.clear()  #清空字典
    del.dict1  #删除速个字典

      Python 字典 in 操作符用于判断键是否存在于字典中,如果键在字典 dict 里返回 true,否则返回 false。

      而 not in 操作符刚好相反,如果键在字典 dict 里返回 false,否则返回 true。

  • 相关阅读:
    基础语法
    Python简介
    Linux安装Python
    Git安装和使用
    vue 表单验证省市县三联动
    js 异步问题
    Json对象与Json字符串互转(4种转换方式)
    vue 常用的表单验证,包括手机号码,固定电话和身份证...
    webpack 基本功能和原理
    测试build出来的dist文件夹是否编译成功
  • 原文地址:https://www.cnblogs.com/rollost/p/10720402.html
Copyright © 2011-2022 走看看