鱼C论坛

 找回密码
 立即注册
查看: 2144|回复: 0

[技术交流] 24 字典:当索引不好用时2 - 景命

[复制链接]
发表于 2017-7-16 23:28:43 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
知识点:

  • 如果在序列中试图为一个不存在的位置赋值,会报错。如果在字典中,字典会自动创建相应的键并添加对应的值进去。
  • dict(),严格来说不是函数,而是一个工厂函数(类型),调用它会生成该类型的一个实例。类似于str()、int()、list()、tuple()都属于工厂函数。



字典的内建方法(dict.内建函数):
1)fromkeys(sep[,value]):
        #用于建立一个新字典,以序列sep(序列)中元素做字典的键,value为所有键对应的初始值。
        参数:sep--字典键值列表。value--可选参数,设置所有键的初始值,如果不设置初始值为None。
        返回值:返回创建的字典字典。
        例:
                1)
  1. >>> s = 1,2,3
  2. >>> a = dict.fromkeys(s)                #只有一个键参数,所以键对应的值为None。
  3. >>> a
  4. {1: None, 2: None, 3: None}
复制代码

                2)
  1. >>> s = 1,2,3
  2. >>> a = dict.fromkeys(s,98)        #设置两个参数,所有键对应的值都为98.
  3. >>> a
  4. {1: 98, 2: 98, 3: 98}
复制代码


访问字典的几个方法:
1)keys():
        #用于以列表的方式返回字典所有的键。
        参数:无
        值:以列表的方式返回一个字典所有的键。
        例:
  1. >>> d = dict.fromkeys(range(5),"鲤鱼")
  2. >>> for i in d.keys():
  3.                                 print(i)
  4. 0
  5. 1
  6. 2
  7. 3
  8. 4
复制代码


2)values():
        #用于以列表的方式返回字典所有的值。
        参数:无
        返回值:以列表的方式返回一个字典所有的值。
        例:
  1. >>> d = dict.fromkeys(range(5),"鲤鱼")
  2. >>>for i in d.values():
  3. print(i)
  4. 鲤鱼
  5. 鲤鱼
  6. 鲤鱼
  7. 鲤鱼
  8. 鲤鱼
复制代码


3)items():
        #用于返回字典中的(键,值)元组。
        参数:无
        返回值:返回可遍历的(键,值)元组。
        例:
  1. >>> d = dict.fromkeys(range(5),"鲤鱼")
  2. >>> for i in d.items():
  3.         print(i)
  4. (0, '鲤鱼')
  5. (1, '鲤鱼')
  6. (2, '鲤鱼')
  7. (3, '鲤鱼')
  8. (4, '鲤鱼')
复制代码


4)get(key,default = None):
        #用于返回指定键的值,如果值不在字典中返回默认值(默认值为None)。
        参数:key -- 字典中要查找的键。        default -- 如果指定键的值不存在时,返回默认值。
        返回值:返回指定键的值,如果值不再字典中返回默认值None。
        例:
  1. >>> d = dict.fromkeys(range(5),"鲤鱼")
  2. >>> d.get(3)
  3. '鲤鱼'
  4. >>> print(d.get(6))                #指定键不存在,返回默认值None。
  5. None
复制代码


5)in(成员资格运算符)
        在字典中检查键的成员资格比序列更加高效,当数据规模相当大的时候两者的差距会很明显。
        #用于检查指定的键是否存在字典中。
        参数:要查找的键。
        返回值:如果键在字典中返回True,否则返回False。
        例:
  1. >>> d = dict.fromkeys(range(3),"鲤鱼")
  2. >>> 0 in d
  3. True
复制代码


6)clear()
        #用于清空字典中所有的元素。
        参数:无
        返回值:无返回值
        例:
  1. >>> a = dict(((1,"一"),(2,"二")))
  2. >>> b = a
  3. >>> a.clear()        #如果用a = {}的方法,不会真正的清除a指向的数据。b的值不会改变。
  4. >>> a
  5. {}
  6. >>> b
  7. {}
复制代码


7)copy()        浅拷贝函数
        #返回一个字典的浅复制。
        参数:无
        返回值:返回一个字典的浅复制。
        例:
  1. >>> a = dict(((1,"一"),(2,"二")))
  2. >>> b = a.copy()
  3. >>> c = a                        #用直接赋值的方式,原字典改变,赋值后的字典会跟着改变。
  4. >>> a[1] = "壹"
  5. >>> a
  6. {1: '壹', 2: '二'}
  7. >>> b
  8. {1: '一', 2: '二'}
  9. >>> c
  10. {1: '壹', 2: '二'}
复制代码


8)pop()
        #类似于列表的pop()函数,只不过在字典中使用可以选择要弹出的键。
        参数:要弹出对象的键。
        返回值:键对应的值。
        例:
  1. >>> a = dict(((1,"一"),(2,"二")))
  2. >>> a.pop(1)
复制代码


9)popitem()
        #与pop()函数类似,只不过是随机的弹出键值对。
        参数:无
        返回值:键值对。
        例:
  1. >>> a = dict(((1,"一"),(2,"二")))
  2. >>> a.popitem
  3. (1, '一')
复制代码


10)setdefault()
        #与get()函数类似,如果键不存在与字典中,将会添加键,并将值设为默认值。
        参数:
                key -- 查找的键值。       
                default -- 键不存在时,设置的默认值键值。
        返回值:返回键对应的值。
        例:
  1. >>> a = dict(((1,"一"),(2,"二")))
  2. >>> a.setdefault(1)                        #参数为字典中有的元素,返回对应的值
  3. '一'
  4. >>> a.setdefault(3)                        #返回了default的默认值None。
  5. >>> a.setdefault(4,"四")                #返回了设置的值‘四’。
  6. '四'
  7. >>> a
  8. {1: '一', 2: '二', 3: None, 4: '四'}        #元素成功添加。
复制代码


11)update()
        #利用一个字典或者一个映射关系去更新一个字典。
        参数:另一个字典或者一个映射关系。
        返回值:返回一个新的字典。
        例:
                1)用另一个字典去更新
  1. >>> a = {1: '一', 2: '二', 3: None, 4: '四', 5: None}
  2. >>> b = {6:"狗"}
  3. >>> a.update(b)
  4. >>> a
  5. {1: '一', 2: '二', 3: None, 4: '四', 5: None, 6: '狗'}
复制代码

                2)用一个映射关系更新
  1. >>> b = ((2,"er"),(3,"san"))
  2. >>> a.update(b)
  3. >>> a
  4. {1: '一', 2: 'er', 3: 'san', 4: '四', 5: None, 6: '狗'}
复制代码









总结一下字典的增删改查:
增:
        1.
  1. >>> dict1 = {}                #新建一个空的字典。

  2.   >>> dict1[0] = "0"                #添加新的键值对。
  3.   >>> dict1
  4.   {0: '0'}
复制代码

        2.setdefault()方法。
        3.update()方法,用另一个字典或映射关系去更新字典。

删:
        1.删除单一元素
                1)
  1. >>> del dict1[0]        #方括号中放要删除的键的名称。
  2. >>> dict1
  3. {}
复制代码

                2)pop()方法,弹出指定的值。
                3)popitem()方法,随机弹出值。
        2.删除整个字典
                1)
  1. >>> dict1.clear()        #clear()方法只能将字典中的所有键值对删除。
  2. >>> dict1
  3. {}                        #此时dict1依然可以访问。
复制代码

                2)  
  1. >>> del dict1                #使用关键字del 加字典名的方法来实现对字典的彻底删除。
  2. >>> dict1                        #此时访问字典会报错。
  3. Traceback (most recent call last):
  4.   File "<pyshell#19>", line 1, in <module>
  5.     dict1
  6. NameError: name 'dict1' is not defined
复制代码


改:
  1. >>> dict1 = {0:"0",1:"0"}                #创建一个字典。
  2. >>> dict1[1] = "1"                        #将1所对应的值修改为“1”。
  3. >>> dict1                                        #查看修改后的字典。
  4. {0: '0', 1: '1'}
复制代码


查:
        1.
  1. >>> dict1[0]                                #直接在方括号中输入键名,就可以查看到对应的值。
  2.   '0'
复制代码

        2.keys()方法,以列表的形式查看字典中所有的键。
        3.values()方法,以列表的形式查看字典中所有的值。
        4.items()方法,以元组的方式查看字典中所有的键值对。
        5.get()方法,返回字典中参数所对应的值。
        6.setdefault()方法,返回指定键对应的值。

评分

参与人数 1鱼币 +8 收起 理由
小甲鱼 + 8

查看全部评分

本帖被以下淘专辑推荐:

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-5-26 07:33

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表