zoukankan      html  css  js  c++  java
  • 005-Python字典

    Python字典(dict)

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

    >>> names_info = {"name":"Jack","age":"28","job":"IT"}
    >>> names_info
    {'age': '28', 'job': 'IT', 'name': 'Jack'}
    

    注:

    键(key)必须是唯一的,但值(value)则不必。
    值(value)可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。
    字典值可以没有限制地取任何python对象,既可以是标准的对象,也可以是用户定义的,但键不行。
    两个重要的点需要记住:
    1. 不允许同一个键出现两次。创建时如果同一个键被赋值两次,后一个值会被记住。
    2. 键必须不可变,所以可以用数字,字符串或元组充当,而用列表就不行。
    

    字典的操作:

    查看字典有哪些方法:

    >>> a = {"a":1,"b":123}
    >>> dir(a)
    ['__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']
    

    1.定义字典值:

    >>> names_info = {"name":"Jack","age":"28","job":"IT"}
    >>> names_info
    {'age': '28', 'job': 'IT', 'name': 'Jack'}
    

    2.访问字典里的值:

    >>> names_info
    {'age': '28', 'job': 'IT', 'name': 'Jack'}
    >>> names_info["name"]
    'Jack'
    >>> names_info["age"] 
    '28'
    

    3.访问错误的key时(提示KeyError):

    >>> names_info["agex"]
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'agex'
    

    4.修改字典的值,以及添加新的建值对;

    >>> names_info["age"] = 30
    >>> names_info["age"]
    30
    >>> names_info["gongzi"] = 5000
    >>> names_info
    {'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'}
    

    5.删除字典指定元素及清空字典所有元素。

    >>> names_info
    {'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'}
    >>> del names_info["gongzi"]
    >>> names_info
    {'age': 30, 'job': 'IT', 'name': 'Jack'}
    
    >>> names_info.clear()
    >>> names_info
    {}
    

    字典内置函数&方法

    以下为内置函数:

    序号 函数及描述 实例
    1 len(dict)计算字典元素个数,即键(key)的总数 >>> len(names_info) 4
    2 str(dict) 输出字典以可打印的字符串表示(双引号,引起来) >>> str(names_info) "{'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}"
    3 type(variable)返回输入的变量类型,如果变量是字典就返回字典类型(dict) >>> type(names_info) <class 'dict'>

    以下为内置方法:

    1.用于删除字典内所有元素; clear()

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.clear()
    >>> names_info
    {}
    

    2.返回一个字典的浅复制(只会复制第一层,如果值包含列表或列表或字典,修改此内容会一同变化);copy()

    >>> names_info = {'age': 30, 'gongzi': 5000, 'job': 'IT', 'name': 'Jack'} 
    >>> names_info1 = names_info.copy()
    >>> names_info1
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    

    3.创建一个新字典,以序列seq中元素做字典的键,value为字典所有键对应的初始值;fromkeys()

    >>> seq = ('name', 'age', 'sex')
    >>> dict = dict.fromkeys(seq)
    >>> print ("新的字典为 : %s" %  str(dict))
    新的字典为 : {'age': None, 'name': None, 'sex': None}
    >>> 
    >>> dict = dict.fromkeys(seq, 10)
    >>> print ("新的字典为 : %s" %  str(dict))
    新的字典为 : {'age': 10, 'name': 10, 'sex': 10}
    

    4.请求函数返回指定的键的值,如果存在返回值,如果不存在返回默认指定值;get()

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.get("sex","指定值")
    '指定值'
    >>> names_info.get("age","指定值")
    30
    

    5.判断键是否存在于字典中,如果键在字典dict里返回true,否则返回false; in

    >>> names_info = {'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'job': 'IT'}
    >>> if "age" in names_info:                                                              
    ...    print("age is %s"% names_info["age"])                                             
    ... else:
    ...    print("not in age")
    ... 
    age is 30
    
    >>> if "sex" in names_info:                    
    ...    print("sex is %s"% names_info["sex"])   
    ... else:
    ...    print("not in sex")                  
    ... 
    not in sex
    

    6.以列表返回可遍历的(键, 值) 元组数组;items()

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.items()
    dict_items([('age', 30), ('name', 'Jack'), ('gongzi', 5000), ('job', 'IT')])
    

    7.以列表形式返回一个字典所有的键;keys()

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.keys()
    dict_keys(['age', 'name', 'gongzi', 'job'])
    

    8.setdefault() 方法和get()方法类似, 如果键不已经存在于字典中,将会添加键并将值设为默认值。

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.setdefault("age",28)
    30
    
    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    >>> names_info.setdefault("sex","nv")
    'nv'
    >>> names_info
    {'age': 30, 'name': 'Jack', 'sex': 'nv', 'gongzi': 5000, 'job': 'IT'}
    

    9.函数把字典2的键/值对更新到字典1里;如果存在相同的key使用字典2更新字典1,如果不存在则添加到字典1中;

    >>> names_info
    {'age': 30, 'name': 'Jack', 'gongzi': 5000, 'job': 'IT'}
    
    >>> a2
    {'aihao': 'nv', 'sex': 'nv', 'gongzi': 10000}
    
    >>> names_info.update(a2)
    >>> names_info
    {'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'sex': 'nv', 'job': 'IT'}
    

    10.以列表形式返回字典中的所有值value;values()

    >>> names_info
    {'age': 30, 'gongzi': 10000, 'aihao': 'nv', 'name': 'Jack', 'sex': 'nv', 'job': 'IT'}
    >>> names_info.values()
    dict_values([30, 10000, 'nv', 'Jack', 'nv', 'IT'])
    >>> list(names_info.values())
    [30, 10000, 'nv', 'Jack', 'nv', 'IT']
    

    11.依照索引id形式取出字典中值:

    a = [{'ip': '1.1.1.1'}, {'ip': '1.1.1.2'}, {'ip': '1.1.1.3'}]
    
    b = [i['ip'] for i in a]
    
    for i in range(len(b)):
        print(i, b[i])
    

    输出:

    0 1.1.1.1
    1 1.1.1.2
    2 1.1.1.3
    

    12.将两个字符串通过拉链(一 一对应)方式,组成字典;

    title = "id,name,age,phone,dept,enrooll_data"
    line = "28,李保林,19,13713731732,It,2017-08-08"
    
    dic = dict(zip(title.split(","), line.split(",")))
    print(dic)
    

    输出:

    {'enrooll_data': '2017-08-08', 'id': '28', 'phone': '13713731732', 'name': '李保林', 'age': '19', 'dept': 'It'}
    

    13.将字典写入mysql中

    desc_file = {'ymd_time': '20201210', 
                 'event_time': 1607529600, 
                 'mini_kadun': 1.1, 
                 'mini_open': 91.1, 
                 'mini_open_pv': 12229, 
                 'mini_play_pv': 11431, 
                 'mini_succ': 91.1, 
                 'h5_kadun': 11.10, 
                 'h5_open': 31.17, 
                 'h5_succ': 71.19, 
                 'h5_open_pv': 21114, 
                 'h5_play_pv': 11111}
    
    import pymysql
    db = pymysql.connect(host="192.168.1.1", port=3306, user="baolin", passwd="123456", db="DB_name")
    cursor = db.cursor()
    qmarks = ', '.join(['%s'] * len(desc_file))
    columns = ', '.join(desc_file.keys())
    
    print("aaaa",qmarks)
    print("bbbbb",columns)
    # print(desc_file.values())
    
    try:
        # 表名为minih5
        qry = "Insert Into minih5 (%s) Values (%s);" % (columns, qmarks)
        cursor.execute(qry, list(desc_file.values()))
        db.commit()
    except Exception as e:
        print(e)
    

    输出:

    aaaa %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s, %s
    bbbbb ymd_time, event_time, mini_kadun, mini_open, mini_open_pv, mini_play_pv, mini_succ, h5_kadun, h5_open, h5_succ, h5_open_pv, h5_play_pv
    
  • 相关阅读:
    jquery选择器详解
    git discard when composer update
    ASCII码、HEX、字符、BCD 等等 基础知识思考
    中文汉字占二个字节还是三个字节长度
    php二分查找的两种实现方法
    windows下运行多个版本node.js
    NodeJS
    Error in library(qcc) : there is no package called 'qcc'
    jquery网络引用地址(收藏)
    实现二分查找
  • 原文地址:https://www.cnblogs.com/baolin2200/p/6294214.html
Copyright © 2011-2022 走看看