zoukankan      html  css  js  c++  java
  • 2 -8 字典dict

    1 如何在一个变量中存储每个员工的个人信息?

    2 字典的定义与特性

    字典是Python语言中唯一的映射类型。

      定义:{key1:value1,key2:value2}

    1、键与值用冒号“:”分开;
    2、项与项用逗号“,”分开;
    

      特性:

    1.key-value结构
    2.key必须可hash、且必须为不可变数据类型、必须唯一
    3.可存放任意多个值、可修改、可以不唯一
    4.无序
    5.查找速度快

     假设key对应的hash值为下面的数字,排序然后根据二分法查找这个值所对应的key的hash值,

      二分法查找速度快

    3 字典的创建

    person = {'name': 'alex','age': 20}
    person1 = dict(name='seven', age=20)
    person2 = dict({'name': 'abc', 'age': 20})
    person3 = dict((['name', 'abc'], ["def", 18]))
    dic = {}.fromkeys(['k1','k2'],[])
    print(dic)
    #{'k1': [], 'k2': []}
    dic["k2"].append(1)
    print(dic)
    #{'k1': [1], 'k2': [1]}

    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    
    print(info['jack'])
    #[22, 'mod', 'ui', 555]
    print(info['alex'])
    #[23, 'it', 'it', 1000]
    print(info['alex'][0])
    #23
    info["alex"][1]="老师"
    print(info)
    #{'jack': [22, 'mod', 'ui', 555], 'alex': [23, '老师', 'it', 1000]

    4 字典的常见操作

    增加

    1、dic['new_key'] = 'new_value';
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    
    print(info['jack'])
    #[22, 'mod', 'ui', 555]
    print(info['alex'])
    #[23, 'it', 'it', 1000]
    print(info['alex'][0])
    #23
    info["alex"][1]="老师"
    print(info)
    #{'jack': [22, 'mod', 'ui', 555], 'alex': [23, '老师', 'it', 1000]
    
    info[24,'eat','ps',678] = "abc"
    print(info)
    #{'jack': [22, 'mod', 'ui', 555], 'alex': [23, 'it', 'it', 1000], (24, 'eat', 'ps', 678): 'abc'}
    
    2、dic.setdefault(key, None) ,如果字典中不存在Key键,由 dic[key] = default 为它赋值;_
    info.setdefault("abc","def")
    print(info)
    #{'jack': [22, 'mod', 'ui', 555], 'alex': [23, 'it', 'it', 1000], 'abc': 'def'}
    #注意:
    setdefault()方法是没有key就新建。有就返回值

    查看

    1、dic['key'],返回字典中key对应的值,若key不存在字典中,则报错;
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    print(info["def"])
    #Traceback (most recent call last):
      File "C:/Users/Administrator/PycharmProjects/-1/Demo/其他/other.py", line 480, in <module>
        print(info["def"])
    KeyError: 'def'
    
    2、dict.get(key, default = None) 返回字典中key对应的值,若key不存在字典中,则返回default的值(default默认为None)
    print(info.get("alex"))
    #[23, 'it', 'it', 1000]
    
    print(info.get("def"))
    #None

    删除

    1、dic.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    
    print(info.pop('alex'))
    #[23, 'it', 'it', 1000]
    
    print(info)
    #{'jack': [22, 'mod', 'ui', 555]}
    
    2、dic.clear() 删除字典中的所有项或元素; 

    键、值、键值对

    1、dic.keys() 返回一个包含字典所有KEY的列表;
    2、dic.values() 返回一个包含字典所有value的列表;
    3、dic.items() 返回一个包含所有(键,值)元祖的列表;
    4、dic.iteritems()、dic.iterkeys()、dic.itervalues() 与它们对应的非迭代方法一样,不同的是它们返回一个迭代子,而不是一个列表;
    
    
    
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    print(info.keys())
    #dict_keys(['jack', 'alex'])
    
    print(info.values())
    #dict_values([[22, 'mod', 'ui', 555], [23, 'it', 'it', 1000]])
    
    print(info.items())
    #dict_items([('jack', [22, 'mod', 'ui', 555]), ('alex', [23, 'it', 'it', 1000])])

    修改

    1、dic['key'] = 'new_value',如果key在字典中存在,'new_value'将会替代原来的value值;如果不存在就会新建{key:value}
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    info['jack'] = "abc"
    print(info)
    #{'jack': 'abc', 'alex': [23, 'it', 'it', 1000]}
    
    2、dic.update(dic2) 将字典dic2的键值对添加到字典dic中,key有的话会覆盖
    
    info = {'jack': [22, 'mod', 'ui', 555],
            'alex': [23, 'it', 'it', 1000]}
    dic = {'name':'abc'}
    info.update(dic)
    print(info)
    #{'jack': [22, 'mod', 'ui', 555], 'alex': [23, 'it', 'it', 1000], 'name': 'abc'}

    循环

    1、for k in dic.keys()
    2、for k,v in dic.items()
    3、for k in dic
    
    for k in dic.keys():
        print(k)
    """
    name
    age
    job
    home
    """
    
    for k ,v in dic.items():
        print(k,v)
    """
    name abc
    age 22
    job it
    home beijing
    """
    
    for k in dic:
        print(k)
    """
    name
    age
    job
    home
    """

    长度 len(dic)

    5 多级字典的嵌套

    6 字典-练习题

  • 相关阅读:
    【codevs4919】线段树练习4
    【51Nod1405】树上距离和 二次扫描与换根法
    【洛谷P1717】钓鱼
    【洛谷P1230】智力大冲浪
    【洛谷P1248】加工生产调度
    hdu 1195(搜索)
    hdu 1181(Floyed)
    hdu 1250(大整数)
    hdu 1180(广搜好题)
    hdu 1099(数学)
  • 原文地址:https://www.cnblogs.com/Mobai-c/p/10143642.html
Copyright © 2011-2022 走看看