鱼C论坛

 找回密码
 立即注册
查看: 2001|回复: 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)
>>> s = 1,2,3
>>> a = dict.fromkeys(s)                #只有一个键参数,所以键对应的值为None。
>>> a
{1: None, 2: None, 3: None}
                2)
>>> s = 1,2,3
>>> a = dict.fromkeys(s,98)        #设置两个参数,所有键对应的值都为98.
>>> a
{1: 98, 2: 98, 3: 98}

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

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

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

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

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

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

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

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

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

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

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








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

  >>> dict1[0] = "0"                #添加新的键值对。
  >>> dict1
  {0: '0'}
        2.setdefault()方法。
        3.update()方法,用另一个字典或映射关系去更新字典。

删:
        1.删除单一元素
                1)
>>> del dict1[0]        #方括号中放要删除的键的名称。
>>> dict1
{}
                2)pop()方法,弹出指定的值。
                3)popitem()方法,随机弹出值。
        2.删除整个字典
                1)
>>> dict1.clear()        #clear()方法只能将字典中的所有键值对删除。
>>> dict1
{}                        #此时dict1依然可以访问。
                2)  
>>> del dict1                #使用关键字del 加字典名的方法来实现对字典的彻底删除。
>>> dict1                        #此时访问字典会报错。
Traceback (most recent call last):
  File "<pyshell#19>", line 1, in <module>
    dict1
NameError: name 'dict1' is not defined

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

查:
        1.
>>> dict1[0]                                #直接在方括号中输入键名,就可以查看到对应的值。
  '0'
        2.keys()方法,以列表的形式查看字典中所有的键。
        3.values()方法,以列表的形式查看字典中所有的值。
        4.items()方法,以元组的方式查看字典中所有的键值对。
        5.get()方法,返回字典中参数所对应的值。
        6.setdefault()方法,返回指定键对应的值。

评分

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

查看全部评分

本帖被以下淘专辑推荐:

想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-11-24 19:36

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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