zoukankan      html  css  js  c++  java
  • Python学习笔记四_数据类型(字典)

    上一篇说了整型、浮点型、列表和元组,这篇主要记录字典的学习。

    字典和字典操作

      字典也是开发过程中最常用的一种数据类型。如果需要存储一个班学生的信息,每个学生有姓名、性别、年龄、住址等等的信息,如果用列表存储,需要很多列表。这时候就需要用字典来定义了。字典,dict,dictionary。

    names = ['Amy','Lily','Ben']
    infos = [[18,'female','北京'],[17,'female','天津'],[21,'male','上海']]

    1、字典定义

    字典是一种key-value的数据类型,使用{}定义每个值用“,”分开,key和value用“:”分隔

    如上述举例将一个班学生的信息可以写入一个字典中,学生的编号为key,学生的信息为value。

    1 infos = {
    2     'Amy':[18,'female','北京'],
    3     'Lily':[17,'female','天津'],
    4     'Ben':[21,'male','上海']
    5 }
    6 print(infos['Amy'])

    字典的特点:

       (1) 取数据方便
       (2) 查找速度快

    为什么字典查找的速度快呢?

            如果用列表存储班级学生信息,那么需要查询一个学生信息时,需要先从names中找到他的位置,再从infos中找到他的信息,如果列表越长,查询速度会越慢。

      用字典实现的话,只需要一个名字和信息对应的一个表,这样很快能根据名字找到它对应的信息,无论表有多大,查找速度都不会慢。

      这和查字典是一样的。如果查一个字,是从第一页翻到最后一页,那么字典约大,查询速度越慢,这种方法就是在list中查找元素的方法。另一种方法是在字典的索引里找到字的对应页码,然后直接翻到那一页找到字,无论找哪个字都很快,不会随着字典变大而变慢,这就是字典的实现方式。

    字典的特性:

       (1) 字典是无续的,因为它没有下标,用key来当索引。

       (2) 字典的key必须是唯一的,key不能重复,天生去重。

    2、字典操作

       (1) 增加:赋值,setdefault()

     1 infos = {
     2     'Amy':[18,'female','北京'],
     3     'Lily':[17,'female','天津'],
     4     'Ben':[21,'male','上海']
     5 }
     6 infos['Kevin'] = [19,'male','北京'] #通过赋值增加
     7 infos.setdefault('Heby',[18,'female','上海']) #通过setdefault增加
     8 print(infos)
     9 infos['Kevin'] = [19,'male','西安'] #如果key存在,会修改原来key对应的value
    10 infos.setdefault('Amy',[18,'female','西安']) #如果key存在,不会修改原来key对应的value
    11 print(infos)

       (2) 删除:pop(),popitem(),del, clear()

     1 infos = {
     2     'Amy':[18,'female','北京'],
     3     'Lily':[17,'female','天津'],
     4     'Ben':[21,'male','上海']
     5 }
     6 infos.pop('Lily')  #指定key来删除
     7 infos.popitem()   #随机删除一个key,不常用
     8 del infos['Ben']  #指定key来删除
     9 infos.clear()  #清空字典
    10 print(infos)

       (3) 修改:赋值

    1 infos = {
    2     'Amy':[18,'female','北京'],
    3     'Lily':[17,'female','天津'],
    4     'Ben':[21,'male','上海']
    5 }
    6 infos['Ben'] = [19,'male','西安']
    7 print(infos)

       (4) 查找:get(), 直接取值

     1 infos = {
     2     'Amy':[18,'female','北京'],
     3     'Lily':[17,'female','天津'],
     4     'Ben':[21,'male','上海']
     5 }
     6 'Amy' in infos #判断Amy是否在字典中,返回True或False
     7 print(infos.get('Lily'))
     8 print(infos.get('Lucy')) #如果取不到这个key,返回None
     9 print(infos.get('Lucy',110)) #如果取不到这个key,默认是110
    10 print(infos['Ben'])
    11 print(infos['Kevin'])  #如果key不存在会报错

    3、字典内置方法

    keys(), values(), items(), get(), setdefault(), update()

     1 infos = {
     2     'Amy':[18,'female','北京'],
     3     'Lily':[17,'female','天津'],
     4     'Ben':[21,'male','上海']
     5 }
     6 infos2 = {'Kevin':[19,'male','上海']}
     7 print(infos.keys())   #获取到字典所有的keys
     8 print(infos.values()) #获取到字典所有的values
     9 print(infos.items())  # 获取字典所有的k-v
    10 print(infos.get('Amy'))
    11 print(infos.setdefault('Ben',[21,'male','上海']))
    12 infos.update(infos2)  #更新字典值,如果key存在的话,就更新,不存在的话就添加
    13 print(infos)

    4、多重字典

     1 infos = {
     2     'Amy':{
     3         'age':18,
     4         'money':200000,
     5         'clothes':'100套',
     6         'hzp':'n多',
     7         'shoes':['nike','addis','lv','chanle']
     8     },
     9     'Lily':{
    10         '金库':'2000w',
    11         'house':['三环一套','4环2套'],
    12         'cars':    {
    13                 'japan':['普拉多','兰德酷路泽'],
    14                 'usa':['林肯','凯迪拉克','福特'],
    15                 'china':['五菱宏光','qq','红旗']
    16             }
    17     }
    18 }
    19 infos['Lily']['cars']['usa'].append('牧马人')
    20 infos['Amy']['shoes'].append('匡威')
    21 infos['Amy']['money'] = infos['Amy']['money'] +200
    22 print(infos)

    5、字典的循环

    直接循环一个字典的话,那么循环的是字典的key

     1 infos = {
     2     'Amy':[18,'female','北京'],
     3     'Lily':[17,'female','天津'],
     4     'Ben':[21,'male','上海']
     5 }
     6 for key in infos:
     7     print(key,'-->',infos[key])#打印key和value的值,推荐使用这种方式,速度快
     8 
     9 for k,v in infos.items():
    10     print(k,'===>',v)#打印key和value的值,这种方式不推荐,因为会把字典转换成列表,效率不高
  • 相关阅读:
    解决 “页面中文字增多,字号突然变大” 的问题
    Seajs的用法
    clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
    页面中文字增多,字号会突然变大
    flex的使用实例
    移动端弹窗滚动时window窗体也一起滚动的解决办法
    display:inline-block带来的问题及解决办法
    sql 整理积累
    T-SQL建索引
    php json_encode在CI框架中的使用细节
  • 原文地址:https://www.cnblogs.com/dongrui624/p/8656310.html
Copyright © 2011-2022 走看看