zoukankan      html  css  js  c++  java
  • 零基础学习python_字典(25-26课)

      今天学到后面的知识,突然发现之前学习到的字典列表啥的都有点忘了,打算补一下之前学到的字典,到时候你看的时候,字符串、列表、字典、元祖这几个没啥顺序,刚开始学的时候了解下方法,当然你可以死记硬背下,后面用到的时候不记得再看也行,熟能生巧嘛!今天主要讲的是字典的方法。

      用相对正式的话来说的话,Python中的字典是python的一种数据结构,它的本质是key和value以及其对应关系的一种集合,一个key可以对应一个多个value。其实看下例子你就很容易理解了。

    1、字典的创建(啥东西都得先出生才行吧)

    字典的创建有几种方法:

    第一种,直接以两个大括号中间以逗号分隔

    第二种,通过dict这个对象直接赋值

    第三种,通过dict对象对元祖和列表进行转换成字典

    很神奇吧,其实还有一种创建方法,也给大家说下吧

    第四种,dict1.fromkeys(seq[,val]),创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);

    演示给大家看下:

    从这里可以看出来如果不设置val的话那么默认生成的就是None,大家也动手敲一下,嘻嘻!

    接下来既然创建好了,那么就可以进行最经典的增、删、查、改的操作啦,哈哈哈!

    为了让大家有个印象我先将字典常用的方法贴出来给大家看下:

    dict1.clear()                              #移除dict1中的所有项  
    dict1.copy()                               #返回dict1的副本  
    dict1.fromkeys(seq[,val])                  #创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值(默认为None);
    dict1.get(key[,default])                   #如果dict1[key]存在,将其返回;否则返回给定的默认值None  
    dict1.keys()                               #返回dict1键的列表  
    dict1.pop(key[,hello])                     #[]之间可以不要,dict1.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;
    
    dict1.popitem() #从dict1中移除任意一项,并将其作为(键,值)对返回 dict1.setdefault(key[,default]) #如果dict1[key]存在则将其返回key的values;否则返回默认值None dict1.update(other) #将other中的每一项加入到dict1中。 dict1.values() #返回dict1中值的列表
    dict1.copy() #返回一个字典的浅复制
    dict1.items()                              #返回表示dict1项的(键,值)对列表  
    dict1.iteritems()                          #从dict1.items()返回的(键,值)对中返回一个可迭代的对象  
    dict1.iterkeys()                           #从dict1的键中返回一个可迭代对象  
    dict1.itervalues()                         #从dict1的值中返回一个可迭代对象  
    

    2、字典增加

      这个相对比较简单,以下说字典的方法时都默认已经创建了一个字典,内容为dict1 = {'x': 1, 'y': 2}

    要想增加内容,直接写新的键值加入即可,如右图

    3、字典删除

    删除的话有几种方法:

    1.dict1.pop(key[,default]) 和get方法相似。如果字典中存在key,删除并返回key对应的vuale;如果key不存在,且没有给出default的值,则引发keyerror异常;

     通过pop指定key删除,如果key不存在则返回hello默认值

    2.dict1.popitem(),这个是随机删除字典的一项,可能你使用的时候会觉得是删除最后一项,但是因为字典本身是无序的,因此不存在说一定是删除某个值,效率很高

    3.dict1.clear() ,clear 方法清除字典中所有的项。这是个原地操作,所以无返回值(或者说返回 None)。

    4.del dict1或del dict1[key],删除字典的值或者字典,删除字典后,字典将不存在

    4、字典修改

    字典修改也有几种方法,哎,方法真多,是不是记得很蛋疼啊,哈哈哈,其实不然,用手敲一下,抱着兴趣的心态看看,我相信你会变得很喜欢的。

    字典最方便的修改方法就是直接赋值就好了,举个例子

    是不是特别简单呢?直接通过key修改即可

    这里另外说一个字典更新的方法:dict1.update(other),这个方法是什么呢?是把一个字典加到另一个字典里面去,没有的就添加,有的就修改。

    5、字典查找

    我们创建了字典往往是为了保存数据的,既然保存了我们想要的数据,那当然就要在适当的时候取出来了,这个是字典比较重要的,方法也较多,其实在我们学的数据库,linux对于查找的命令都是很重要而且较多的,下面来给大家逐个介绍下吧!

    1.dict1.get(key[,default]) ,如果dict1[key]存在,将其返回;否则返回给定的默认值None  ,看下面的例子你就知道了

    2.in,类似于python2.7里面的has_key,判断一个键是否在一个字典里面,有就True没有就False

    3.直接通过key值查询value即可,

    4.dict1.keys() ,keys 方法将字典中的键以 dict_keys 形式返回,dict1.values(),values方法将字典中的键以 dict_values 形式返回

    .

     5.dict1.setdefault(key,default=None) ,和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

     6.dict1.items(),以列表返回可遍历的(键, 值) 元组数组

     

    当然除了上面的还有一个copy的方法,这个也在这里说一下吧,虽然不是什么查询相关的,这个是复制,也叫浅拷贝。

    dict1.copy(),什么是浅拷贝看下面的实例便知道了

    实例中 dict2 其实是 dict1 的引用(别名),所以输出结果都是一致的。dict3 父对象进行了深拷贝(也就是一级目录深拷贝),不会随dict1 修改而修改,子对象(二级目录)是浅拷贝所以随 dict1 的修改而修改。

  • 相关阅读:
    八数码难题 (codevs 1225)题解
    小木棍 (codevs 3498)题解
    sliding windows (poj 2823) 题解
    集合删数 (vijos 1545) 题解
    合并果子 (codevs 1063) 题解
    等价表达式 (codevs 1107)题解
    生理周期 (poj 1006) 题解
    区间 (vijos 1439) 题解
    区间覆盖问题 题解
    种树 (codevs 1653) 题解
  • 原文地址:https://www.cnblogs.com/leixiaobai/p/7779437.html
Copyright © 2011-2022 走看看