1. clear

方法clear删除所有的字典项,就地执行,什么都不返回(或者说返回None)

 d = {}
d['name'] = 'Gumby'
d['age'] = 42
print(d)
return_value = d.clear()
print(d)
print(return_value)

结果:

 {'name': 'Gumby', 'age': 42}
{}
None

2. copy

方法copy返回一个新字典,其包含的键-值对与原来的字典相同(该方法属于浅复制,因为值本身是原件,而非副本)。

 x = {'username': 'admin', 'machines':['foo','bar','baz']}
y = x.copy()
y['username'] = 'mlh'
y['machines'].remove('bar')
print(y)
print(x)
结果:
{'username': 'mlh', 'machines': ['foo', 'baz']}
{'username': 'admin', 'machines': ['foo', 'baz']}

使用模块copy中的函数deepcopy,可以实现深复制,即同时复制值及所包含的值。

 from copy import deepcopy
d = {}
d['names'] = ['Afriend','Bfriend']
c = d.copy()
dc = deepcopy(d)
d['names'].append('Clive')
print(c)
print(dc)
结果:
{'names': ['Afriend', 'Bfriend', 'Clive']}
{'names': ['Afriend', 'Bfriend']}

3. fromkeys

该方法用于创建一个新字典,其中包含指定的键,且每个键对应的值都是None。

 names1 = {}.fromkeys(['name','age'])
print(names1) names2 = dict.fromkeys(['name', 'age'])
print(names2) 结果:
{'name': None, 'age': None}
{'name': None, 'age': None}

方法1是先创建一个空字典,再对其调用fromkeys创建另一个字典,略显多余。

方法2直接对dict调用方法fromkeys,更简洁实用(dict是左右字典所属的类型,故可以直接调用)。

也可以指定特定的值创建新字典。

 names3 = dict.fromkeys(['name', 'age'], '(unknow)')
print(names3)
结果:
{'name': ['(unknow)', 40], 'age': ['(unknow)', 40]} names4 = dict.fromkeys(['name', 'age'], ['unknow',''])
print(names4)
结果:
{'name': ['unknow', ''], 'age': ['unknow', '']}

4. get - 访问字典(该方法可以访问字典中没有的项,则返回None,或者返回指定值)

 d = {}
print(d.get('name'))
结果:
None print(d.get('name', 'the key is not been found!'))
结果:
the key is not been found! # 如果字典包含指定的键,get作用将于普通字典查找相同
d = {}
d['name'] = 'Eric'
print(d.get('name', 'the key is not been found!'))
结果:
Eric

使用方法get来访问 '数据库' 条目。

 # 一个使用get()的简单数据库
# 在这里插入代码清单4-1中的数据库(字典people)
people = {
'Alice':{
'phone': '',
'addr': 'Foo drive 23'
},
'Beth':{
'phone': '',
'addr': 'Bar street 43'
},
'Cecil':{
'phone': '',
'addr': 'Baz avenue 90'
} } labels = {
'phone': 'phone number',
'addr': 'adress'
} name = input('Name: ') # 要查找电话号码还是地址?
request = input('Phone number (p) or adress (a)?') # 使用正确的键:
key = request # 如果request既不是p也不是a
if request == 'p': key = 'phone'
if request == 'a': key = 'addr' # 使用get提供默认值
person = people.get(name, {})
# print(person)
label = labels.get(key, key)
result = person.get(key, 'not availabe') print("{}'s {} is {}!".format(name, label, result)) 结果:
Name: Alice
Phone number (p) or adress (a)?a
Alice's adress is Foo drive 23!

5. itmes

该方法返回一个包含所有字典项的列表,其中每个元素都为(key, value)的形式。字典项在列表中的排序不确定。

返回值属于一种名为 "字典视图" 的特殊类型,字典试图可用于迭代(迭代见第五章)。

 d = {'title': 'Pyhton web site', 'url':'http://www.Python.org', 'spam': ''}
print(d.items())
结果:
dict_items([('title', 'Pyhton web site'), ('url', 'http://www.Python.org'), ('spam', '')]) length = len(d.items())
print(length)
结果:3

如果需要将字典项复制到列表中,使用list函数即可。

 print(list(d.items()))
结果:
[('title', 'Pyhton web site'), ('url', 'http://www.Python.org'), ('spam', '')]

6. kyes - 该方法用于返回一个字典视图,其中包含指定字典中的键

 d = {'title': 'Pyhton web site', 'url':'http://www.Python.org', 'spam': ''}
print(d.keys())
print(list(d.keys()))
结果:
dict_keys(['title', 'url', 'spam'])
['title', 'url', 'spam']

7. pop - 该方法用于获取与指定键相关联的值,并将该键-值对从字典中删除

 d = {'x':3,'y':6}
print(d.pop('x'))
print(d)
结果:
3
{'y': 6}

8. popitem

该方法用于随机弹出(删除该键-值对)一个字典项。因字典项的顺序是不确定的,无“最后一个元素”的概念,与list.pop弹出列表中最后一个元素不同。

 d = {'title': 'Pyhton web site', 'url':'http://www.Python.org', 'spam': ''}
print(d.popitem())
print(d)
结果:
('spam', '')
{'title': 'Pyhton web site', 'url': 'http://www.Python.org'}

详见:模块collections中的OrderedDict类

9. stedefault(与方法get有点像)-该方法用于获取与指定键相关联的值

1)当指定键不存在时,在字典中添加指定的键-值对,并返回指定的值;

2)当指定键存在时,返回其值,并保持字典不变。

3)指定值可选,若没有指定,默认未None。

 d = {}
print(d.setdefault('name'))
print(d)
结果:
None
{'name': None} d = {}
print(d.setdefault('name', 'N/A'))
print(d)
结果:
N/A
{'name': 'N/A'}
 # 指定的键存在时,返回指定值,并保持字典不变
d = {}
d['name'] = 'Gummy'
print(d.setdefault('name', 'N/A'))
print(d)
结果:
Gummy
{'name': 'Gummy'}

更多参见,模块collections中的defaultdict类。

10. update - 用一个字典中的项更新另一个字典

对于通过参数提供的字典,将其项添加到当前字典中;如果当前字典包含键相同的项,就替换它。

 d = {
'title': 'python web site',
'url': 'http://www.python.org',
'changed': 'Mar 14 2016'
} x = {'title': 'Python Language Website'}
# 观察该方法是否返回值
print(d.update(x))
print(d)
结果:
None #由此可见并不返回值
{'title': 'Python Language Website', 'url': 'http://www.python.org', 'changed': 'Mar 14 2016'}

调用update时,可向它提供一个映射、一个由键-值对组成的序列(或其他可迭代对象)或关键字参数。

11. values

用于返回一个由字典中的值组成的字典视图。不同于keys,其返回的视图可能包含重复值。

 d = {}
d[1] = 1
d[2] = 2
d[3] = 3
d[4] = 1
print(d.values())
结果:
dict_values([1, 2, 3, 1])

章小结:

(1)关键词:映射、将字符串格式设置功能用于字典、字典方法

(2)新介绍函数:dict(seq) # 从键-值对、映射或关键字参数创建字典

Python基础 第四章 字典(2)字典方法&章小结的更多相关文章

  1. Python 基础语法(四)

    Python 基础语法(四) --------------------------------------------接 Python 基础语法(三)------------------------- ...

  2. Python基础知识(四)

    Python基础知识(四) 一丶列表 定义格式: 是一个容器,由 [ ]表示,元素与元素之间用逗号隔开. 如:name=["张三","李四"] 作用: 存储任意 ...

  3. Python基础学习四

    Python基础学习四 1.内置函数 help()函数:用于查看内置函数的用途. help(abs) isinstance()函数:用于判断变量类型. isinstance(x,(int,float) ...

  4. <<Python基础教程>>学习笔记 | 第04章 | 字典

    第04章:字典 当索引不好用时 Python唯一的内建的映射类型,无序,但都存储在一个特定的键中.键能够使字符.数字.或者是元祖. ------ 字典使用: 表征游戏棋盘的状态,每一个键都是由坐标值组 ...

  5. Python基础(二) —— 字符串、列表、字典等常用操作

    一.作用域 对于变量的作用域,执行声明并在内存中存在,该变量就可以在下面的代码中使用. 二.三元运算 result = 值1 if 条件 else 值2 如果条件为真:result = 值1如果条件为 ...

  6. Python基础5:列表 元祖 字典 集合

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  7. Python基础5:列表 元祖 字典 集合 Json

    [ 列表] 列表(list)是Python以及其他语言中最常用到的数据结构之一.Python使用使用中括号 [ ] 来解析列表. 列表是可变的(mutable)——即:可以改变列表的内容. 相关操作: ...

  8. Python基础-列表、元祖、字典、字符串

    列表和分组 序列概览: 数据结构是通过某种方式组织在一起的数据元素的集合.这些元素可以是数字.字符,甚至可以是其他数据结构. 在python中,最基本的数据结构是序列(sequence). 序列中的每 ...

  9. Python基础知识-05-数据类型总结字典

    python其他知识目录 1.一道题,选择商品的序号.程序员和用户各自面对的序号起始值 如有变量 googs = ['汽车','飞机','火箭'] 提示用户可供选择的商品: 0,汽车1,飞机2,火箭用 ...

随机推荐

  1. 顺序模型api

    Compile:配置模型,然后进行训练 compile(optimizer, loss=None, metrics=None, loss_weights=None, sample_weight_mod ...

  2. python 文件,文件夹,路径操作

    判断路径或文件os.path.isabs(...) # 判断是否绝对路径os.path.exists(...) # 判断是否真实存在os.path.isdir(...) # 判断是否是个目录os.pa ...

  3. java试题复盘——9月26日

    5.在 JAVA 编程中, Java 编译器会将 Java 程序转换为(A) A.  字节码 B.  可执行代码 C.  机器代码 D.  以上都不对 解析: 编译器将Java源代码编译成字节码cla ...

  4. tomcat发布web项目

    转:https://www.cnblogs.com/skyblue-li/p/7888951.html Tomcat是一种Web服务器,我们自己做好了一个Web项目,就可以通过Tomcat来发布.服务 ...

  5. NOI2019 游记——一切都是最好的安排

    有幸运有遗憾 一切都是最好的安排. Day-3 临近NOI了,机房都在狂奶某某同学进队稳了 HE省队垫底,THUSC面试都没进 作为一个有自知之明的人 也就指望着能拼进前100,至少也拿个银牌. 心态 ...

  6. powderdesinger显示中英文表名

     菜单->Tool->Model Options->Name Convention->右侧display中选择显示name还是code.不支持同时显示,但可以选择显示code, ...

  7. python 调用github的api,呈现python的受欢迎的程度

    1 使用api调用数据: 在浏览器的地址栏中输入: https://api.github.com/search/repositories?q=language:python&sort=star ...

  8. The first one spawns an additional process forwarding requests to a series of workers (think about it as a form of shield, at the same level of apache or nginx), while the second one sets workers to n

    Things to know (best practices and “issues”) READ IT !!! — uWSGI 2.0 documentationhttps://uwsgi-docs ...

  9. Express框架开发知识点总结

    express --view=pug myapp 以上语句在当前工作目录中创建名为 myapp 的 Express 应用程序,采用的模板是jade. 以前还在纠结使用hbs模板引擎或者ejs模板,实际 ...

  10. SQL-W3School-高级:SQL FOREIGN KEY 约束

    ylbtech-SQL-W3School-高级:SQL FOREIGN KEY 约束 1.返回顶部 1. SQL FOREIGN KEY 约束 一个表中的 FOREIGN KEY 指向另一个表中的 P ...