• 字典方法


    #像其他内建类型一样,字典也有方法,这些方法非常有用,不过可能不像使用列表或字符串一样频繁使用。
    1、clear()方法
     1 #clear()方法用于删除字典内的所有项。
     2 #clear()方法的语法如下:
     3 >>>dict.clear()
     4 #此语法中dict代表指定字典,该方法不需要参数。该函数是一个原地操作(类似于list.sort)函数,没有任何返回值(返回值为None)。
     5 #示例如下:
     6 >>> student={'袁威':'666','肖涛':'222','陈安':'111','小明':'333'}
     7 >>> print('字典中元素的个数为:%d个'%len(student))
     8 字典中元素的个数为:4个
     9 >>> student.clear()
    10 >>> print('字典中元素的个数为:%d个:'%len(student))
    11 字典中元素的个数为:0个:
    12 #由输出结果可知,字典调用clear方法后整个字典内所有项都被删除。
    13 #再看下面两个示例:
    14 示例1:
    15 >>> x={}
    16 >>> y=x
    17 >>> x['key']='value'
    18 >>> y
    19 {'key': 'value'}
    20 >>> x={}
    21 >>> y
    22 {'key': 'value'}
    23 示例2:
    24 >>> x={}
    25 >>> y=x
    26 >>> x['key']='value'
    27 >>> y
    28 {'key': 'value'}
    29 >>> x.clear()
    30 >>> y
    31 {}
    32 #由两个示例中,x和y最初对应同一个字典。示例1中,通过将x关联到一个新的空字典对他重新赋值,这对y没有任何影响,还关联到原先的字典。若想清空原始字典中所有元素,则必须使用clear方法,使用clear后,y的值也被清空了。
    2、copy()方法
     1 #copy()方法返回一个具有相同键/值对的新字典。这个方法是浅复制(shallow copy),因为值本身是相同的,而不是副本。
     2 #copy()方法的语法如下:
     3 >>>dict.copy()
     4 #此语法中dict字典代表指定字典,该方法不需要参数。返回结果为一个字典的浅复制。
     5 #该方法示例如下:
     6 >>> student={'袁威':'123','肖涛':'456','陈安':'789','小智':'666'}
     7 >>> st=student.copy()
     8 >>> print('复制后得到的st为:',st)
     9 复制后得到的st为: {'袁威': '123', '肖涛': '456', '陈安': '789', '小智': '666'}
    10 #由输出结果看到,使用copy方法可以将字典复制给另一个变量。
    11 #我们可以通过下面的示例看看什么是浅复制。
    12 >>> student={'小智':'1002','info':['小张','1006','man']}
    13 >>> st=student.copy()
    14 >>> st['小智']='1005'
    15 >>> print('更改copy后的st为:',st)
    16 更改copy后的st为: {'小智': '1005', 'info': ['小张', '1006', 'man']}
    17 >>> print('原字符串为:',student)
    18 原字符串为: {'小智': '1002', 'info': ['小张', '1006', 'man']}
    19 >>> st['info'].remove('man')
    20 >>> print('删除后的st为:',st)
    21 删除后的st为: {'小智': '1005', 'info': ['小张', '1006']}
    22 >>> print('删除后的student为:',student)
    23 删除后的student为: {'小智': '1002', 'info': ['小张', '1006']}
    24 #由输出结果看到,替换副本的值时原始字典不受影响。如果修改了某个值(原地修改,不是替换),原始字段就会改变,因为同样的值也在原字典中。以这种方式进行复制就是浅复制,而使用深复制(deep copy)可以避免这个问题。
    3、fromkeys()方法
     1 #fromkeys()方法用于创建一个新字典,以序列seq中的元素做字典的键,value为字典所有键对应的初始值。
     2 #fromkeys()方法语法如下:
     3 >>>dict.fromkeys(seq[,value])
     4 #此语法中dict代表指定字典;seq代表字典键值列表;value代表可选参数,设置键序列(seq)的值。该方法返回结果为列表。
     5 #示例如下:
     6 >>> target=('姓名','性别','爱好')
     7 >>> info=dict.fromkeys(target)
     8 >>> print('info字典信息为:',info)
     9 info字典信息为: {'姓名': None, '性别': None, '爱好': None}
    10 >>> info=dict.fromkeys(target,10)
    11 >>> print('新的info字典信息为:',info)
    12 新的info字典信息为: {'姓名': 10, '性别': 10, '爱好': 10}
    13 #由输出结果看到,fromkeys方法使用给定的键建立新字典,每个键默认对应的值为None。
    4、get()方法
     1 #get()方法返回指定键的值,如果值不在字典中,就会返回默认值。
     2 #get()方法语法如下:
     3 >>>dict.get(key,default=None)
     4 #此语法中dict代表指定字典,key代表字典中要查找的键,default代表指定键的值不存在时就返回默认值。该方法返回结果为指定键的值,如果值不在字典中,就返回默认值None。
     5 #示例如下:
     6 >>> student={'袁威':'123','邬玲苑':'456'}
     7 >>> print('袁威的学号为:%s'%student.get('袁威'))
     8 袁威的学号为:123
     9 #由输出结果看到,get方法使用比较简单,再如示例:
    10 >>> st={}
    11 >>> print(st['name'])
    12 Traceback (most recent call last):
    13   File "<pyshell#8>", line 1, in <module>
    14     print(st['name'])
    15 KeyError: 'name'
    16 >>> print(st.get('name'))
    17 None
    18 >>> print('name的值为:%s'%st.get('name'))
    19 name的值为:None
    20 #由输出结果看到,其他方法试图访问字典中不存在的项时会出错,而使用get方法就不会。使用get方法访问一个不存在的键时,返回None。这里还可以自定义默认值,用于替换None,示例:
    21 >>> st={}
    22 >>> print('name的值为:%s'%st.get('name',袁威))
    23 Traceback (most recent call last):
    24   File "<pyshell#12>", line 1, in <module>
    25     print('name的值为:%s'%st.get('name',袁威))
    26 NameError: name '袁威' is not defined
    27 >>> print('name的值为:%s'%st.get('name','袁威'))
    28 name的值为:袁威
    29 #由输出结果看到,输出结果中用‘袁威’替代了None。
    5、key in dict方法
     1 #Python字典in操作符用于判断键是否存在于字典中,如果键在字典dict中就返回True,否则就返回False。
     2 #该方法语法如下:
     3 >>>key in dict
     4 #此语法中dict代表指定字典,key代表要在字典中查找的键。如果键在字典里就返回True,否则就返回False。示例如下:
     5 >>> student={'袁威':'123','邬玲苑':'456'}
     6 >>> print('袁威在字典里:','袁威'in student)
     7 袁威在字典里: True
     8 >>> print('黄金萍在字典里:','黄金萍'in student)
     9 黄金萍在字典里: False
    10 #由输出结果看到,已返回对应的True和False。
    11 #该方法是Python3中的方法,在Python2中有一个相同功能的方法--has_key方法。
    6、items()方法
     1 #items()方法以列表返回可遍历的(键,值)元组数值。
     2 #items()方法语法如下:
     3 >>>dict.items()
     4 #此语法中dict代表指定字典,该方法不需要参数,返回结果为可遍历的(键/值)元组数值。示例如下:
     5 >>> 铿锵工作室={'袁威':'789','邬玲苑':'456'}
     6 >>> print('调用items方法的结果为:%s'%铿锵工作室.items())
     7 调用items方法的结果为:dict_items([('袁威', '789'), ('邬玲苑', '456')])
     8 >>> print('调用items方法的结果为:',铿锵工作室.items())
     9 调用items方法的结果为: dict_items([('袁威', '789'), ('邬玲苑', '456')])
    10 #由输出结果看到,返回结果为一个元组数值。
    11 #在Python2中提供了一个iteritems方法,该方法和items方法的作用大致相同,但是iteritems方法返回的是一个迭代器对象,而不是列表。
    7、keys()方法
    1 #keys()方法以列表返回一个字典所有键。
    2 #keys()方法语法如下:
    3 >>>dict.keys()
    4 #此语法中dict代表指定字典,该方法不需要参数。返回结果为一个字典所有键。示例如下:
    5 >>> 铿锵工作室={'肖涛':'123','袁威':'456','邬玲苑':'789'}
    6 >>> print('字典铿锵工作室所有键为:%s'%铿锵工作室.keys())
    7 字典铿锵工作室所有键为:dict_keys(['肖涛', '袁威', '邬玲苑'])
    8 #由输出结果看到,返回的是一个元组数值,数组包含了字典所有键。
    8、setdefault()方法
     1 #setdefalut()方法和get()方法类似,用于获得与给定键相关联的值。如果键不存在于字典中,就会添加键并将值设为默认值。
     2 #setdefault()方法语法如下:
     3 >>>dict.setdefault(key,default=None)
     4 #此语法中dict代表指定字典,key代表查找的键值,default代表键不存在时设置的默认键值,该方法没有任何返回值。示例如下:
     5 >>> 铿锵工作室={'肖涛':'123','袁威':'456','邬玲苑':'789'}
     6 >>> print('字典铿锵工作室所有键为:%s'%铿锵工作室.keys())
     7 字典铿锵工作室所有键为:dict_keys(['肖涛', '袁威', '邬玲苑'])
     8 >>> 铿锵工作室={'袁威':'123','邬玲苑':'456'}
     9 >>> print('肖涛的键值为:%s'%铿锵工作室.setdefault('肖涛'))
    10 肖涛的键值为:None
    11 >>> print('邬玲苑的键值为:%s'%铿锵工作室.setdefault('邬玲苑'))
    12 邬玲苑的键值为:456
    13 >>> print('铿锵工作室的新值为:%s'%铿锵工作室)
    14 铿锵工作室的新值为:{'袁威': '123', '邬玲苑': '456', '肖涛': None}
    15 #由输出结果看到,当键不存在时,setdefault方法返回默认值并更新字典;如果存在,就返回与其对应的值,不改变字典。和get一样,默认值可以选择,如果不设定就使用None,如果设定就使用设定的值,例如:
    16 >>> 铿锵工作室={'袁威':'123','邬玲苑':'456'}
    17 >>> print('小强的键值为:%s'%铿锵工作室.setdefault('小强'))
    18 小强的键值为:None
    19 >>> print('小张的键值为:%s'%铿锵工作室.setdefault('小张','1006'))
    20 小张的键值为:1006
    21 >>> print('铿锵工作室字典新值为:%s'%铿锵工作室)
    22 铿锵工作室字典新值为:{'袁威': '123', '邬玲苑': '456', '小强': None, '小张': '1006'}
    23 #由输出结果看到,小强没有设置值,使用的是默认值,输出键值为None;小张设置的默认值是1006,输出键值为1006.
    9、update()方法
     1 #update()方法用于把字典dict2的键/值对更新到dict里
     2 #update()方法语法如下
     3 >>>dict.update(dict2)
     4 #此语法中dict代表指定字典,dict2代表添加到指定字典dict里的字典,该方法没有任何返回值。
     5 #示例如下:
     6 >>> student1={'小明':'123','小智':'456'}
     7 >>> student2={'小强':'789'}
     8 >>> print('原字典为:',student)
     9 原字典为: {'袁威': '123', '邬玲苑': '456'}
    10 >>> student.update(student2)
    11 >>> print('新字典为:%s'%student)
    12 新字典为:{'袁威': '123', '邬玲苑': '456', '小强': '789'}
    13 >>> student3={'小强':'1005'}
    14 >>> student.update(student3)   #相同项覆盖
    15 >>> print('新字典为:%s'%student)
    16 新字典为:{'袁威': '123', '邬玲苑': '456', '小强': '1005'}
    17 #由输出结果看到,提供的字典中的项被添加带旧字典中,如果有相同的键就会被覆盖。
    10、values()方法
     1 #values()方法以列表形式返回字典中所有值。与返回键的列表不同,返回的列表中可以包含重复的元素。
     2 #values()方法语法如下:
     3 >>>dict.values()
     4 #此语法中dict代表指定字典,该方法不需要参数,返回结果为字典中的所有值。示例如下:
     5 >>> 铿锵工作室={'小明':'1001','小智':'1002','小强':'1001'}
     6 >>> print('铿锵工作室所有值为:%s'%list(student.values()))
     7 铿锵工作室所有值为:['1001', '1002', '1003']
     8 >>> print('铿锵工作室所有值为:%s'%student.values())
     9 铿锵工作室所有值为:dict_values(['1001', '1002', '1003'])
    10 #由输出结果看到,返回列表中包含重复的元素

    end

  • 相关阅读:
    [Java123] 方法重载中遇到的编译器错误: both methods have same erasure => 引入Java泛型type erasure
    [Java123] 认识JavaBean
    [Java123] HashMap实现和应用
    [Java123] 开源工具guava比较器链ComparisonChain (附加比较null空值的实现方法)
    [Java123] Java的异常处理机制
    [ORACLE123] sysdate处理
    Linux进程实时可视化监控
    【Java123】ThreadLocal学习笔记
    【XML123】了解XMLUnit
    字符串%s
  • 原文地址:https://www.cnblogs.com/DLHe/p/7737523.html
Copyright © 2020-2023  润新知