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 字典-练习题

  • 相关阅读:
    php多态
    ssl certificate problem: self signed certificate in certificate chain
    test plugin
    open specific port on ubuntu
    junit vs testng
    jersey rest service
    toast master
    use curl to test java webservice
    update folder access
    elk
  • 原文地址:https://www.cnblogs.com/Mobai-c/p/10143642.html
Copyright © 2011-2022 走看看