文档章节

Python3字典详解

ZeroBit
 ZeroBit
发布于 07/21 16:55
字数 1131
阅读 9
收藏 0

创建和使用字典

字典可以用下面方式创建:

phoneBook = {"Bill":"1234", "Mike":"4321"}

字典中,键是唯一的。如果键不唯一,那么程序也不会抛出异常,只是相同的键值会被最后一个覆盖:

phoneBook = {"Bill":"1234", "Mike":"4321", "Bill":"5678"}
# 如果通过 Bill 定位,那么查到的值是 "5678"

dict函数

可以用 dick 函数,通过其他映射或键值对的序列建立字典。

items = [["Bill","1234"], ("Mike","4321")]
d1 = dict(items)
d2 = dict(name = 'Bill', number = '5678', age = 45)
print(d1) # {'Bill': '1234', 'Mike': '4321'}
print(d2) # {'name': 'Bill', 'number': '5678', 'age': 45}

字典的基本操作

  • 字典的很多操作与列表类似:
    • len(dict):返回字典dict中元素的数量
    • dict[key]:返回关联到key上的值
    • dict[key] = value:为key赋值
    • del dict[key]:删除键为key的项
    • key in dict:检查dict中是否包含有键为key的项

字典的格式化字符串(format_map()方法)

dic = {'title':'MyTitle', 'url':'http://www.aaa.com', 'company':'Zerobit'}

str = """
<html>
	<head>
		<title>{title}</title>
	<head>
	<body>
		<h1>{title}</h1>
		<a href="{url}">{company}</a>
	</body>
</html>
"""
print(str.format_map(dic))

字典的迭代

1. 获取字典中key的列表

dic = {'x':1, 'y':2, 'z':3}
# 输出 x y z
for key in dic:
	print(key, end=' ')

2. 同时获取字典中的key和value列表

dic = {'x':1, 'y':2, 'z':3}
for key,value in dic.items():
	print(key, value)

字典方法

clear方法

  • clear方法用于清空字典中的所有元素
dic = {'x':1, 'y':2, 'z':3}
dic.clear()

copy方法与deepcopy函数

  • copy方法用于复制一个字典,该方法返回复制后的新字典
dic = {'x':1, 'y':2, 'z':3}
newDic = dic.copy()

copy方法只是浅复制,只复制 第1层 的字典数据。至于第2层及以下的所有层,原字典和新字典都指向同一个值,不管是修改原字典的这些元素,还是新字典中的这些元素,原字典和新字典中的这些元素都会同时改变。

  • 如果想改上面的情况,就需要使用 copy 模块中的 deepcopy 函数进行深层复制
from copy import deepcopy
dic = {'x':1, 'y':2, 'z':3}
newDic = deepcopy(dic)

fromkeys方法

  • fromkeys方法用于根据key建立新的字典。在新的字典中,所有的key都有相同的默认值。
# 在一个空字典上调用fromkeys方法创建一个新字典,通过列表指定key
newDic1 = {}.fromkeys(['name', 'company', 'salary'])
print(newDic1) # {'name': None, 'company': None, 'salary': None}
newDic2 = {}.fromkeys(['name', 'company', 'salary'], 100)
print(newDic2) # {'name': 100, 'company': 100, 'salary': 100}

get方法

使用dict[key]的形式从字典获取value时,如果key不存在,则会抛KeyError异常

  • 如果想避免key不存在抛异常的情况,则需使用 get()方法
dic = {'x':1, 'y':2, 'z':3}
print(dic.get('a')) # None

items方法和keys方法

  • items方法用于返回字典中所有的 key-value 对,可用于迭代。
  • keys方法用于返回字典中所有的 key,也可用于迭代。

pop方法和popitem方法

  • pop方法用于获取指定key的值,并从字典中弹出这个 key-value 对。
  • popitem方法用于返回并弹出字典中最后一个 key-value 对。

对于字典来说,里面的元素并没有顺序,所以这里所说的最后一个 key-value 对,是指最后一个添加的 key-value 对。

dic = {'c':10, 'a':40, 'b':12, 'x':44}
dic['z'] = 3
print(dic.pop('b')) # 12
print(dic.popitem()) # ('z', 3)
print(dic) # {'c': 10, 'a': 40, 'x': 44}

setdefault方法

  • setdefault方法用于设置key的默认值。该方法接收两个参数,第1个表示 key,第2个参数表示默认值。如果key不存在,则会向字典中添加这个key和默认值
dic = {}
dic.setdefault("name","alex")
print(dic) # {'name': 'alex'}

update方法

  • update方法可以用一个字典中的元素更新另外一个字典。
dic1 = {'c':10, 'a':40, 'b':12, 'x':44}
dic2 = {'name': 'Bill', 'number': '5678', 'x': 150}
dic1.update(dic2)
print(dic1) # {'c': 10, 'a': 40, 'b': 12, 'x': 150, 'name': 'Bill', 'number': '5678'}

如果dict2中的 key-value 对在dict1中不存在,那么会在dict1中添加一个新的 key-value 对。如果dict1已经存在这个key,那么会用dict2中key对应的值更新dict1中key的值。

values方法

  • values方法用于以迭代器形式返回字典中值的列表
dic = {'c':10, 'a':40, 'b':12, 'x':44}
for val in dic.values():
	print(val, end=' ') # 10 40 12 44 

© 著作权归作者所有

ZeroBit

ZeroBit

粉丝 1
博文 58
码字总数 49861
作品 0
南宁
私信 提问
python --- json模块和pickle模块详解

  json:JSON(JavaScript Object Notation, JS 对象标记) 是一种轻量级的数据交换格式(用于数据序列化和反序列化)。(适用于多种编程语言,可以与其他编程语言做数据交换)   pickle:...

码农47
2017/08/19
0
0
Python3多目标赋值及共享引用注意事项

Python中多目标赋值即将等号左边所有的变量名都赋值给右边的对象,完成赋值操作,比如将三个变量同时赋值给一个字符串。 a = b = c = 'Python' print(a) print(b) print(c) 复制代码 示例结果...

A遇上方知友
05/27
0
0
Python编程入门基础语法详解经典

一、基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种: #浮点 float_number = 2.3 #复数 complex_number = 1 + 5j #整型 integer_nu...

qq1622479435
2018/08/19
0
0
Python编程入门基础语法详解(经典)

一、基本概念 1.内置的变量类型: Python是有变量类型的,而且会强制检查变量类型。内置的变量类型有如下几种: #浮点 float_number = 2.3 #复数 complex_number = 1 + 5j #整型 integer_nu...

糖宝lsh
2018/08/19
13
0
Python编程入门到实践 - 笔记( 6 章)

第 6 章主要练习了各种字典,以下内容 什么是字典 字典中 键-值 的关系 一个简单的字典 通过字典中的键查找其对应的值 在字典中添加 键-值 修改字典中的值 遍历字典中的键值对 items( ) 遍历...

mlwzby
2018/07/02
0
0

没有更多内容

加载失败,请刷新页面

加载更多

jquery底层函数-jQuery.ajaxSetup()

jQuery.ajaxSetup( options )返回: 描述: 为以后要用到的Ajax请求设置默认的值 添加的版本: 1.1jQuery.ajaxSetup( options ) options 类型: PlainObject 一个用来配置Ajax请求的"{键:值}"对,......

前端老手
29分钟前
5
0
Qt编写自定义控件56-波浪曲线

一、前言 波浪曲线控件,其实是之前一个水波进度条控件的一个核心,其实就是利用正弦曲线来生成对应的坐标进行绘制,把这个功能单独提取出来,是为了更详细的研究各种正弦余弦等拓展效果,当...

飞扬青云
36分钟前
5
0
深入理解计算机系统cp1:存储单位与编码

摘要: 理解计算机是如何存储数据的。 原文:深入理解计算机系统cp1:存储单位与编码 作者:Chor Fundebug经授权转载,版权归原作者所有。 1. 存储单位 位:即 bit,表示二进制位,要么是 0 ...

Fundebug
38分钟前
5
0
Python查询比特币实时价格

在本文中我们将学习如何使用使用coinmarketcap提供的比特币行情API,编写Python程序来获取像比特币、莱特币或以太币之类的区块链数字货币的实时行情/实时价格。 1、比特币行情API调用代码 我...

汇智网教程
今天
8
0
爬虫平台Crawlab核心原理--自动提取字段算法

⚠注意: 可配置爬虫现在仅在Python版本(v0.2.1-v0.2.4)可用,在最新版本Golang版本(v0.3.0)还暂时不可用,后续会加上,请关注近期更新 背景 实际的大型爬虫开发项目中,爬虫工程师会被要...

tikazyq
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部