zoukankan      html  css  js  c++  java
  • [ python ] 字典的使用

    数据类型划分:
        可变数据类型:list、dict、set    不可哈希
        不可变数据类型:tuple、bool、int、str    可哈希

    字典

    python内置了字典类型,使用键-值(key - value) 存储,具有极快的查找速度;

    key:必须是 不可变数据类型
    value:任意数据类型

    dict 优点:
        二分查找效率快
        存储大量的关系型数据
        特点:字典是无序的

    dict的增删改查

    1. 增加

     (A) dic1['key'] = value     没有键值对,则添加;如果键,则值覆盖。

    dic1 = {"name": "hkey", "age": 18, "sex": "male"}
    dic1["heigh"] = 185
    dic1['name'] = 'jay'
    print(dic1)
    # 执行结果:
    # {'age': 18, 'sex': 'male', 'name': 'jay', 'heigh': 185}
    

    (B) set_default()    有键值对,不做任何改变,没有才添加。

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    
    dic.setdefault('age', 20)       # 存在不修改,不报错
    dic.setdefault('heigh', 180)    # 不存在修改。
    print(dic)
    
    # 执行结果:
    # {'sex': 'male', 'heigh': 180, 'age': 18, 'name': 'jay'}
    

    2. 删除

    (A) pop(key, None)    删除键值对,并返回值。如果字典中没有删除的key,则返回 None

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    t1 = dic.pop('name')    # 当 key 存在时,删除字典中的key-value并返回value值给 t1
    print(t1)
    print(dic)
    
    # 执行结果:
    # jay
    # {'sex': 'male', 'age': 18}
    
    
    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    t1 = dic.pop('name1111', None)    # 当 key 不存在时,则返回定义的第二个参数给 t1
    print(t1)
    # 执行结果:
    # None
    

    (B) popitem() 随机删除并返回删除元组,元组里面是删除的键值对

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    
    t1 = dic.popitem()  # 随机删除key-value 并作为元组返回给 t1
    print(t1, type(t1))
    print(dic)
    
    # 执行结果:
    # ('name', 'jay') <class 'tuple'>
    # {'sex': 'male', 'age': 18}
    

    (C) del 删除键值对或者整个字典

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    del dic['name'] # 删除字典中的键值对
    del dic # 直接删除整个字典
    

     3. 修改

    (A) update     合并两个字典

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    dic2 = {'name1':'hkey', 'age1': 20}
    
    dic.update(dic2)    # 将dic2作为参数合并到dic中,dic变,dic2不变
    
    print('dic:', dic)
    print('dic2:', dic2)
    
    # 执行结果:
    # dic: {'age': 18, 'name': 'jay', 'sex': 'male', 'name1': 'hkey', 'age1': 20}
    # dic2: {'age1': 20, 'name1': 'hkey'}
    

    4. 查询

    (A) dic.keys    字典key的组合,可以当成list类型来处理
    (B) dic.values    字典value的组合,可以当成list类型来处理
    (C) dic.items    字典(key, value)的组合,可以当做元组来处理

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    
    print(dic.keys())
    print(dic.values())
    print(dic.items())
    
    # 执行结果:
    # dict_keys(['age', 'sex', 'name'])
    # dict_values([18, 'male', 'jay'])
    # dict_items([('age', 18), ('sex', 'male'), ('name', 'jay')])
    
    keys()、values()、items() 一般用for来遍历
    
    for k in dic:   # 循环 key 值
        print(k)
    
    for v in dic.values():  # 循环 value 值
        print(v)
    
    for k, v in dic.items():    # 循环key, value 值
        print(k, v)
    

     (D) dic.get()    存在则返回 value值,不存在就返回预设值

    dic = {'name':'jay', 'age':18, 'sex': 'male'}
    print(dic.get('name'))
    print(dic.get('name111', None))
    
    # 执行结果:
    # jay
    # None
    

    练习题:

    s1 = 'asdf123sdfer45sdf3'
    统计 s1 出现数字的次数,连续的数字算一个数字;

    s1 = 'asdf123sdfer45sdf3'
    
    for i in s1:    # 循环整个 s1 字符串
        if i.isalpha(): # 当单个字符串是字母的时候,就将字母替换成空格
            s1 = s1.replace(i, ' ')
    
    li = s1.split() # 通过空格将字符串 s1 分隔成列表
    print(len(li))  # 直接统计列表元素的个数
    
    # 执行结果:
    # 3
    
  • 相关阅读:
    poj3278 Catch That Cow
    poj2251 Dungeon Master
    poj1321 棋盘问题
    poj3083 Children of the Candy Cor
    jvm基础知识—垃圾回收机制
    jvm基础知识1
    java面试基础必备
    java soket通信总结 bio nio aio的区别和总结
    java scoket aIO 通信
    java scoket Blocking 阻塞IO socket通信四
  • 原文地址:https://www.cnblogs.com/hukey/p/9621631.html
Copyright © 2011-2022 走看看