zoukankan      html  css  js  c++  java
  • Python基础之字典

    • 字典基础
    • 字典定义
    • 字典方法
    • 通过 for 循环打印字典
    • 相关内置函数用法

    0x01 字典基础

    • 字典是什么?
      1、字典通过key: value形式表示
      2、字典使用大括号()定义,唯一的(哈希表)映射类型
      3、字典是可变类型。字典的必须不可变对象
      4、键(key)可以是元组字符串不可变对象
      5、键(key)必须保持唯一性
      6、字典可以存储任意对象,也可以是不同数据类型

    0x02 定义字典方法

    • 字典定义
    # 定义空字典
    d = dict()  
    
    # 定义空字典  
    d = {}
    
    # 通过dict()函数定义字典,并进行实例化  
    d = dict(a = 1, b = 2)
    
    # 常规定义
    d = {"name": "Chow",
            "age": 20
    }
    
    # 复杂定义
    d = dict([("name", "Chow"), ("age", 18)])
    
    • 多重赋值
    # 方法一  
    >>> x, y = 1, 2
    >>> x
    1
    >>> y
    2
    
    # 方法二  
    >>> x, y = ('Chow', 20)
    >>> x
    'Chow'
    >>> y
    20
    

    0x03 字典方法

    • 获取字典方法
    >>> dir(dict)
    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__'
    , '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__',
     '__hash__', '__init__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '_
    _new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__'
    , '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get
    ', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
    
    • 数据加入字典
    >>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic['job'] = "运维工程师"
    >>> dic
    {'age': 26, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
    
    • 修改字典的value
    dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic
    {'age': 26, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
    >>> dic['age'] = 28
    >>> dic
    {'age': 28, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
    
    • keys() 获取字典的key
    >>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic1 = dic.keys()                           # 获取字典内所有的key,以列表方式输出  
    >>> dic1
    dict_keys(['name', 'sex', 'age'])
    
    • values() 获取字典内的value
    >>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic1 = dic.values()                       # 获取字典内所有value,以列表方式输出 
    >>> dic1
    dict_values(['Robin.Chow', '男', 26])
    
    • items() 字典转换为列表
    >>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic1 = dic.items()                     # 获取字典内所有元素,以列表方式输出   
    >>> dic1
    dict_items([('name', 'Robin.Chow'), ('sex', '男'), ('age', 26)])
    
    • get() 返回key对应的value
    >>> dic = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> "name" in dic                           # 判断字典内是否包换"name"key
    True
    >>> dic.get("age")                          # 获取键值age的value
    26
    >>> dic["age"]
    26
    
    • setdefault(k, v) 若key不存在, 设置一个默认v并返回v值
    
    
    
    • update() 把一个字典更新到另一个字典内
    >>> dic1 = {"name": "Robin.Chow", "sex": "男","age":26}
    >>> dic2 = dict(addres = 'cq', job = 'IT')
    >>> dic1.update(dic2)                              # 字符串连接  
    >>> dic1
    {'name': 'Robin.Chow', 'sex': '男', 'age': 26, 'addres': 'cq', 'job': 'IT'}
    
    • pop() 删除key对应的values元素
    >>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26, 'addres': 'cq', 'job': 'IT'}
    >>> dic1.pop('sex')                                   # 删除指定key所对应的value, 返回删除value
    '男'
    >>> dic1
    {'name': 'Robin.Chow', 'age': 26, 'addres': 'cq', 'job': 'IT'}
    
    • has_key() 判断key是否存在, 存在返回True, 不存在返回False
    >>> dic
    {'age': 28, 'sex': '男', 'name': 'Robin.Chow', 'job': '运维工程师'}
    >>> dic.pop('sex')                       # 删除性别
    '男'
    >>> dic
    {'age': 28, 'name': 'Robin.Chow', 'job': '运维工程师'}
    
    • copy() 拷贝字典到新字典内
    >>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    >>> dic2 = dic1                          # 浅拷贝: 引用对象
    >>> dic3 = dic1.copy()               # 浅拷贝:深拷贝父对象(一级目录),子对象(二级目录)不拷贝,还是引用  
    >>> dic2
    {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    >>> dic3
    {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    
    • clear() 清空字典
    >>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    >>> dic1.clear()                        # 清空字典  
    >>> dic1
    {}
    
    • fromkeys(seq, value) 把序列l,作为字典的key, 若不给values。默认为None, 若指定value, key对应的值为value
    >>> seq = ('name', 'age')
    >>> dic1 = dic.fromkeys(seq)
    >>> dic1
    {'name': None, 'age': None}
    >>> dic2 = dic1.fromkeys(seq, 'Chow')
    >>> dic2
    {'name': 'Chow', 'age': 'Chow'}
    

    0x04 通过for循环打印字典

    • for循环用法
    #方法1
    for key in info:
        print(key,info[key])
    
    #方法2
    for k,v in info.items():      #会先把dict转成list,数据里大时莫用
        print(k,v)
    
    • 练习示例
    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    # @Time    : 2018-4-1 9:05
    # @Author  : anChow
    # @File    : demo.py
    
    info = dict()
    name = input('Please input name: ')
    age = input('Please input age: ')
    sex = input('Please input sex: ')
    info['name'] = name
    info['age'] = age
    info['sex'] = sex
    print(info.items())
    for k, v in info.items():
        print(" 'key':%s    --->    'value': %s " % (k, v))
    

    0x05 高级函数

    • zip()
      1、用于将可迭代对象作为参数,将对象中对应的元素打包成元组,返回列表
      2、迭代器元素个数不一致,则返回列表长度与最短的对象相同,利用 * 号操作符,将元组解压为列表
    >>> l1 = ['a', 'b', 'c']
    >>> l2 = [1, 2, 3, 4]
    >>> l3 = zip(l1, l2)
    >>> l3
    <zip object at 0x0000023E940DCFC8>
    >>> l3 = dict(zip(l1, l2))                         # 把列表转换成字典  
    >>> l3
    {'a': 1, 'b': 2, 'c': 3}
    

    0x06 相关内置函数用法

    • help() 查看函数或模块用途
    >>> help(dict)
    Help on class dict in module builtins:
    
    class dict(object)
     |  dict() -> new empty dictionary
     |  dict(mapping) -> new dictionary initialized from a mapping object's
     |      (key, value) pairs
     |  dict(iterable) -> new dictionary initialized as if via:
     |      d = {}
     |      for k, v in iterable:
     |          d[k] = v
    
    .....  以下省略 .....
    
    • dir()
    # 不带参数,返回当前范围内的变量、方法和定义的类型列表  
    >>> dir()
    ['__annotations__', '__builtins__', '__doc__', '__loader__', '__name__', '__package__', '__spec__']
    
    # 带参数,返回参数的属性、方法列表  
    >>> dir(dict)
    ['__class__', '__contains__', '__delattr__', '__delitem__', '__dir__', '__doc__', '__eq__', '__format__', '__ge__', '__getattribute__', '__getitem__', '__gt__', '__hash__', '__init__', '__init_subclass__', '__iter__', '__le__', '__len__', '__lt__', '__ne__', '__new__', '__reduce__', '__reduce_ex__', '__repr__', '__setattr__', '__setitem__', '__sizeof__', '__str__', '__subclasshook__', 'clear', 'copy', 'fromkeys', 'get', 'items', 'keys', 'pop', 'popitem', 'setdefault', 'update', 'values']
    
    • str() 将对象转换为字符串
    >>> i = 23
    >>> str(i)
    '23'
    
    • int() 将对象转换为整型
    >>> str = '100'
    >>> i = int(str)
    >>> type(i)
    <class 'int'>
    >>> i
    100
    
    • list() 用于将元组转换为列表
    >>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    >>> list = list(dic1)            # 将字典的key转换成列表  
    >>> list
    ['name', 'sex', 'age']
    
    • dict() 创建字典
    >>> dict()                        # 空字典
    {}
    >>> dict(name = "Chow", age = 15)              # 传入关键字
    {'name': 'Chow', 'age': 15}
    >>> dict(zip(['one', 'two', 'three'], [1, 2, 3]))    # 映射函数方式来构造字典
    {'three': 3, 'two': 2, 'one': 1} 
    >>> dict([('one', 1), ('two', 2), ('three', 3)])     # 可迭代对象方式来构造字典
    {'three': 3, 'two': 2, 'one': 1}
    
    • tuple() 将对象转换为元组
    # 将列表转换为元组  
    >>> li = [1, 2, 3, 4]
    >>> tuple(li)
    (1, 2, 3, 4)
    
    # 将字典转换为元组  
    >>> dict = dict(name = 'Chow', age = 10)
    >>> tuple(dict)
    ('name', 'age')
    
    • xrange() 生成一个生成器
      1、 语法
    xrange(stop)
    xrange(start, stop[, step])
    
    # 生成一个序列,不分配内存空间, 程序调用时,才读入内存  
    >>>xrange(8)
    xrange(8)
    >>> list(xrange(8))
    [0, 1, 2, 3, 4, 5, 6, 7]
    
    # 起始位置,结束位置  
    >>> xrange(3, 5)
    xrange(3, 5)
    >>> list(xrange(3,5))
    [3, 4]
    
    # 起始位置,结束位置,步长  
    >>> xrange(0,6,2)
    xrange(0, 6, 2)              # 步长为 2
    >>> list(xrange(0,6,2))
    [0, 2, 4]
    
    • range()
    # 生成一组序列, 存入内存空间  
    >>> range(8)  
    [0, 1, 2, 3, 4, 5, 6, 7]
    
    # 终止位置-1  
    >>> range(3,5) 
    [3, 4]
    
    • input() 标准输入, 返回字符串,python3
    >>> str = input("Please input num: ")
    Please input num: 1111
    >>> type(str)
    <class 'str'>
    
    • raw_input() 标准输入, 返回字符串,python2
    >>>a = raw_input("Please input num:")
    input:123
    >>> type(a)
    <type 'str'> 
    
    • len() 返回对象长度或个数
    >>> li = [1, 2, 3, 4]
    >>> len(li)
    4
    >>> dic1 = {'name': 'Robin.Chow', 'sex': '男', 'age': 26}
    >>> len(dic1)                              # 返回键值对个数
    3
    
    • type() 查看对象类型
    >>> li = [1, 2, 3, 4]
    >>> type(li)
    <class 'list'>
    
    • isinstance() 判断对象是否为已知类型,返回布尔值,与type()相似
    >>>a = 2
    >>> isinstance (a,int)
    True
    >>> isinstance (a,str)
    False
    >>> isinstance (a,(str,int,list))    # 是元组中的一个返回 True
    True
    
    • print() 打印输出
      1、Python3.x 是函数
      2、Python2.x 不是函数,是关键字
    >>> print("Hello World")  
    Hello World  
    
    • enumerate()
      1、遍历数据对象(如列表、元组或字符串)组合为索引序列,同时列出数据和数据下标,与 for 结合使用
      2、语法
    enumerate(sequence, [start=0]) 
    
    # sequence       序列、迭代器或支持迭代对象  
    # start               下标起始位置   
    
    >>> lise = ['Robin', 'Chow', 'Jone']
    >>> for i, element in enumerate(lise):
    ...     print(i, lise[i])
    ...
    0 Robin
    1 Chow
    2 Jone
    
  • 相关阅读:
    设备坐标与逻辑坐标
    4个设备上下文DC
    VC6.0智能提示消失恢复
    VC
    JavaWeb_设置Cookie的作用路径
    JavaWeb_Cookie显示最近浏览的商品
    JavaWeb_Cookie
    MVC案例——通过配置切换底层存储源
    MVC案例——修改用户
    MVC案例——删除操作
  • 原文地址:https://www.cnblogs.com/RobinChow/p/8685122.html
Copyright © 2011-2022 走看看