zoukankan      html  css  js  c++  java
  • 字典



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


    字典dict:
    字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中
    dict的key必须是不可变类型,可哈希
    dict的value:任意数据类型
    特点:无序的

    字典dict优点:二分查找去查询
    存储大量的关系型数据
    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

    dict = {'name':['felix.wang','wangqiuhua'],
    'id':{'name_id':101,'e_name':'alina','c_name':'wangtiqin'},
    True:1,
    (1,2,3):'wuyiyi',
    2:'二哥',
    erge:2
    }

    一、字典的增:
    1:dict['key'] = value 在原字典中无此 key 则增加,有则更改key的vlaue 无则加之,有则改之

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict['Felix'] = 8888
    dict
    {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': 8888}
    dict['Felix'] = 9999
    {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': 9999}

    2:dict.setdefault(key[, default])
    原字典中有键 key不做任何改变,没有才增加
    默认值为None

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict.setdefault('Felix')
    dict
    {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None}
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None}
    dict.setdefault('Alina',9999)
    dict
    {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258', 'Felix': None,'Alina': 9999}

    二、字典的删:
    1.dict.pop按照键key去删除,连同key也一起删除
    dict.pop(key[, default]),有返回值,按键去删除的值,如果没有key值,抛出异常

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict.pop('Beth') 有返回值
    '9102'
    dict
    {'Alice': '2341', 'Cecil': '3258'}

    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict.pop('beth') 抛出异常 KeyError
    dict.pop('beth',None)
    dict.pop('beth','没有此键')
    '没有此键'

    2.dict.popitem()
    Python 字典 popitem() 方法随机返回并删除字典中的一对键和值(一般删除末尾对)。返回结果为元组
    如果字典已经为空,却调用了此方法,就报出KeyError异常。

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict.popitem()
    'Cecil': '3258'
    dict.popitem()
    'Beth': '9102'
    dict.popitem()
    'Alice': '2341'

    3.del dict(key) 删除指定key的键值对,无返回值,若在字典中无该key,则抛出异常

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    del dict['Alice'] 无返回值
    dict = {'Beth': '9102', 'Cecil': '3258'}
    del dict['felix']
    KeyError: 'felix' 无key 抛出异常

    del dict 则表示删除该字典

    4.dict.clear() 清空字典

    exp:
    dict = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dict.clear() 清空该字典,字典为空
    dict
    {}

    三、字典的改

    1.dict['key'] = value 在原字典中无此 key 则增加,有则更改key的vlaue 无则加之,有则覆盖

    2.a.update(b) 把字典b的键值对增加到字典a中,如果a中已经有b中的key,则把该key的值更改为b中key的值
    就地修改
    exp:
    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dic2 = {'Alice': '1234', 'Felix': '0828'}
    dit2.update(dict1)
    dic1
    {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dic2
    {'Alice': '2341', 'Felix': '0828', 'Beth': '9102', 'Cecil': '3258'}

    四、字典的查询
    1.dic1[key] 查找key的值,没有抛出异常
    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dic1['Alice']
    '2341
    '
    2.dic1.keys() -> 查找所有的key,返回所有key值组成1个列表

    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dic1.keys() -> 查找所有的key,返回所有key值组成1个列表
    dict_keys(['Alice', 'Felix', 'Beth', 'Cecil'])

    3.dic1.values() -> 返回value值组成1个列表
    dict_values(['2341', '0828', '9102', '3258'])

    4.dic1.items() -> 返回键值对,组成一个列表
    dict_items([('Alice', '2341'), ('Felix', '0828'), ('Beth', '9102'), ('Cecil', '3258')])

    5.dic1.get(key[, default]) -> 查找1个key的值,Return the value for key if key is in the dictionary, else default.
    exp:
    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    dic1.get('Alice')
    '2341'

    dic1.get('felix','没有')
    '没有'
    五、其他
    1.len(dic) 返回字典键值对的个数

    2.count()

    3.key in d -> Return True if d has a key key, else False
    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}
    'Alice' in dic1 -> True
    'Alince' in dic1 -> False

    4.key not in d -> Equivalent to not key in d.

    5.copy() -> Return a shallow copy of the dictionary.浅拷贝


    6.字典的嵌套


    交换
    a = 1
    b = 2 # a,b = 1,2
    a,b = 2,1
    a
    2
    b
    1

    a,b = [1,2],[3,4]
    a
    [1,2]
    b
    [3,4]

    exp:
    dic1 = {'Alice': '2341', 'Beth': '9102', 'Cecil': '3258'}

    for i in dic1: 等同于 for i in dic1.keys():
    print(i)
    Alice
    Beth
    Cecil

    for j in dic1.values():
    print(j)
    2341
    9102
    3258

    for k in dic1.items():
    print(k)
    [('Alice', '2341')
    ('Beth', '9102')
    ('Cecil', '3258')

    for g,h in dic1.items():
    print(g,h)
    Alice 2341
    Beth 9102
    Cecil 3258






    .
  • 相关阅读:
    对象遍历 for in ,数组遍历for in 与 for of 的区别
    计算一个数组中key值相同的数量
    VUE的两种跳转push和replace对比区别
    微信公众号二次分享ios分享失败问题
    获得对象中的键或值
    第一个table根据checkbox选择tr,在另一个table中显示对应索引的tr(jq遍历的运用)
    checkbox 全选反选 获得所有的checkbox
    为什么jQuery要return this.each()?
    用jq代码写出一个轮播图。
    页面滚动到一定位置,两个div 朝中间运动。
  • 原文地址:https://www.cnblogs.com/Felix-DoubleKing/p/12074100.html
Copyright © 2011-2022 走看看