zoukankan      html  css  js  c++  java
  • Python数据类型详解——字典

    Python数据类型详解——字典

    引子

    已经学习了列表,现在有个需求——把公司每个员工的姓名、年龄、职务、工资存到列表里,你怎么存?

    staff_list = [
        ["Kwan",21,"CEO",1000000],
        ["小明",22,"人力",5000],
        ["LL",21,"财务",7000],
        # [xxx,xx,xx,xxx]
        # [xxx,xx,xx,xxx]
        # [xxx,xx,xx,xxx]  
    ]
    

    以上面的形式存,没问题。不过你要查某一个人的工资的话,就得遍历这个列表了。

    for i in staff_list:
        if i[0] == '小明':		# 查询小明的信息
            print(i)
            break
    

    但假如公司有20000人,如果你要查询的这个人正好在列表的最后一个,那就意味着这个for循环得20000人全部走一遍,才能找到。列表越大,查找速度就会越慢。

    此时,就需要用到Python语言中唯一得映射类型——字典(dict)。

    一、定义

    定义语法{key1:value1, key2:value2} (以键值对得形式定义,用{}括起来)

    1、键(key)与值(value)之间用冒号:隔开。

    2、键值对与键值对之间用,隔开。

    示例:

    info = {
        'name':'Kwan',
        'age':'21',
        'blog_site':'https://cnblogs.com/Kwan-C/'
    }
    

    特性:

    • key-value(键值对)结构
    • key必须为不可变数据类型、必须唯一
    • 可存放任意多个value、可修改、可以不唯一
    • 字典是无序的
    • 查询速度块,且不受字典大小的影响(至于为什么块?学到hash时就懂了)

    二、创建方法

    # 第一种(最常用)
    info = {'name':'Kwan', 'age':21}
    
    # 第二种
    info = dict(name='Kwan', age=21)
    
    # 第三种
    info = dict({'name':'Kwan', 'age':21})
    
    # 第四种
    s = {}.fromkeys(['name', 'age'],1)    # 这种定义的结果为{'name': 1, 'age': 1}
    

    三、增加操作

    info = {
        'Kwan':[21, 'CEO', 1000000],
        '小明':[22, '人力', 5000],
    }
    
    # 新增LL   直接添加
    info['LL'] = [21, '财务', 7000]
    # 或者使用setdefault
    info.setdefault('LL', [21, '财务', 7000])
    

    四、删除操作

    info = {
        'Kwan':[21, 'CEO', 1000000],
        '小明':[22, '人力', 5000],
    }
    
    info.pop('Kwan')  # 用pop()方法,删除指定的key
    info.popitem()    # 用popitem()方法,随机删除一个key
    del info['小明']	# 用del,删除指定的key
    info.clear()      # 用clear()方法,清空该字典 
    

    五、修改操作

    info = {
        'Kwan':[21, 'CEO', 1000000],
        '小明':[22, '人力', 5000],
    }
    
    info['Kwan'][1] = 'boss'	# 直接找到指定元素重新赋值即可
    info['KK'] = '新来的'		# 'KK'这个键(key)不存在于info中,此时就是添加操作了
    
    info2 = {
        'PP':[24, '销售', 6000],
        'UU':[23, '宣传', 5000],
    }
    
    info.update(info2)		# 将字典info2的键值对添加到字典info中
    

    六、查操作

    info = {
        'Kwan':[21, 'CEO', 1000000],
        '小明':[22, '人力', 5000],
    }
    
    
    a = info['Kwan']	# 返回字典中key为'Kwan'对应的值,若key不存在,则报错
    b = info.get('小明', default = None)   # 返回地点中key为'小明'对应的值,若key不存在,则返回default的值(default默认值为None)
    if 'Kwan' in info:		# 用in方法,判断key是否在字典中,存在则返回True,否则为False
        print(info['Kwan'])
    c = info.keys()     # 返回一个包含字典所有key的列表
    d = info.values()   # 返回一个包含字典所有value的列表
    e = info.items()    # 返回一个包含所有(key, value)元组的列表
    

    七、循环

    info = {
        "name":"Kwan",
        "ahe":21,
        "website": "https://cnblogs.com/Kwan-C/"
    }
    
    # 第一种
    for k in info.keys():    # 遍历字典所有的key
        print(k, info[k])
        
    # 第二种
    for k, v in info.items():	# 遍历字典所有的键值对
        print(k, v)
    
    # 第三种
    for k in info:		# 同第一种
        print(k, info[k])
    

    八、求取字典的长度

    info = {
        "name":"Kwan",
        "ahe":21,
        "website": "https://cnblogs.com/Kwan-C/"
    }
    
    print(len(info))     # 结果为字典中key的数量,info中key的数量为3
    
  • 相关阅读:
    [js对象]JS入门之Date对象
    从Microsoft SqlServer 2005中返回有一定顺序的记录集
    [js对象]JS入门之Global对象
    [JS.IntelliSense]VS2008(Orcas) So Cool
    即插即用插件式框架的程序集处理遐想(TypeFinder)
    [C#3.0体验]Orcas中内置的LinQ,XLinQ[DLinQ]扩展方法
    [ASP.NET入门]页面生命周期
    [IE]IE6&IE7运行于同一个系统中
    [js对象]JS入门之Boolean&Object对象
    RSS(Really Simple Syndication)常用标签
  • 原文地址:https://www.cnblogs.com/Kwan-C/p/11466082.html
Copyright © 2011-2022 走看看