Python数据结构方法简介四————字典

字典是另一种可变容器模型,且可存储任意类型对象。字典的每个键值(key=>value)对用冒号(:)分割,每个键值对之间用逗号(,)分割,整个字典包括在花括号({})中,键必须是唯一的,但值则不必。值可以取任何数据类型,但键必须是不可变的,如字符串,数字或元组。

1、创建字典

dict1={"a":1,"b":2,"c":"3","d":4}
dict2={"a":[1,2,3,4],"b":2,"c":"3","d":4}
dict3={"a":[1,2,3,4],"b":2,"(5,6,7,8)":"3","d":4}

2、访问字典

字典是无序的,所以它不能依靠索引进行访问,只能通过键访问值。

dict1["a"]
1
dict1["b"]
2

如果键不存在,会报keyError.

dict1[‘e‘]
Traceback (most recent call last):
  Python Shell, prompt 71, line 1
KeyError: ‘e‘

3、修改字典

由于字典的键是唯一的,字典只能修改键所对应的值。如果键不存在,就会在字典中添加新的键值对。

dict1
{‘a‘: 1, ‘c‘: ‘3‘, ‘b‘: 2, ‘d‘: 4}
dict1[‘a‘]=10
dict1[‘b‘]=20
dict1[‘e‘]=5
print dict1
{‘a‘: 10, ‘c‘: ‘3‘, ‘b‘: 20, ‘e‘: 5, ‘d‘: 4}

None可以做字典的键或者值

dict1[‘e‘]=None
print dict1
{‘a‘: 10, ‘c‘: ‘3‘, ‘b‘: 20, ‘e‘: None, ‘d‘: 4}
dict1[None]=2
print dict1
{‘a‘: 10, ‘c‘: ‘3‘, ‘b‘: 20, ‘e‘: None, ‘d‘: 4, None: 2}

四、字典的方法

1、clear 清空字典

D.clear() -> None. Remove all items from D

dict1={"a":1,"b":2,"c":3,"d":4}
dict1.clear()
print dict1
{}

2、copy复制字典

D.copy() -> a shallow copy of D

dict1={"a":1,"b":2,"c":3,"d":4}
test=dict1.copy()
print test
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘d‘: 4}
字典的copy方法是浅拷贝
test==dict1
True
test is dict1
False

3、fromkeys  创建一个新字典,以序列S中元素做字典的键,val 为字典所有键对应的初始值

dict.fromkeys(S[,v]) -> New dict with keys from S and values equal to v. v defaults to None.

dict1.fromkeys([‘a‘,‘b‘],10)
{‘a‘: 10, ‘b‘: 10}

4、get 获取指定键的值

D.get(k[,d]) -> D[k] if k in D, else d. d defaults to None.

print dict1

{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘d‘: 4}

dict1.get(‘a‘)

1

dict1.get(‘b‘)

2

get方法与访问字典相似,但是get又成被称为安全取值,就是当键不存在时,不会导致程序崩溃,而是返回None。

dict1.get(‘a‘)
1
dict1.get(‘b‘)
2
dict1.get(‘e‘)

5、has_key 判断键是否存在,返回布尔值

D.has_key(k) -> True if D has a key k, else False

dict1.has_key(‘a‘)
True
dict1.has_key(‘e‘)
False

6、items 以列表返回可遍历的(键, 值) 元组数组

D.items() -> list of D‘s (key, value) pairs, as 2-tuples

dict1.items()
[(‘a‘, 1), (‘c‘, 3), (‘b‘, 2), (‘d‘, 4)]

7、keys 以列表的形式返回字典的键

D.keys() -> list of D‘s keys

values 以列表的形式返回字典的值

D.values() -> list of D‘s values

dict1.keys()

[‘a‘, ‘c‘, ‘b‘, ‘d‘]

dict1.values()

[1, 3, 2, 4]

8、dict1.update(dict2) 把字典dict2的键/值对更新到dict1里

D.update([E, ]**F) -> None. Update D from dict/iterable E and F. If E present and has a .keys() method, does: for k in E: D[k] = E[k] If E present and lacks .keys() method, does: for (k, v) in E: D[k] = v In either case, this is followed by: for k in F: D[k] = F[k

dict1.update({"v":1})
print dict1
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘d‘: 4, ‘v‘: 1}

9、setdefault 和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default

D.setdefault(k[,d]) -> D.get(k,d), also set D[k]=d if k not in D

dict1.setdefault(‘a‘)
1
dict1.setdefault(‘r‘)
print dict1
{‘a‘: 1, ‘c‘: 3, ‘b‘: 2, ‘d‘: 4, ‘r‘: None, ‘v‘: 1}

10、pop  删除字典给定键所对应的值,返回值为被删除的值

D.pop(k[,d]) -> v, remove specified key and return the corresponding value. If key is not found, d is returned if given, otherwise KeyError is raised

dict1={"a":1,"b":2,"c":3,"d":4}
dict1.pop(‘a‘)
1
dict1.pop(‘e‘)
Traceback (most recent call last):
  Python Shell, prompt 95, line 1
KeyError: ‘e‘

11、popitem()随机删除字典中的一对键和值,返回值为元组,元组的元素是被删除的键值对

D.popitem() -> (k, v), remove and return some (key, value) pair as a 2-tuple; but raise KeyError if D is empty.

dict1.popitem()
(‘c‘, 3)
dict1.popitem()
(‘b‘, 2)

12、 iterkeys( )       返回字典键的一个迭代器

iteritems( )      返回字典键-值对的一个迭代器

itervalues( )     返回字典值的一个迭代器

这三种方法都是迭代器,常与for循环结合使用。

时间: 2024-12-22 13:43:21

Python数据结构方法简介四————字典的相关文章

Python数据结构方法简介三————元组

Python的元组与列表类似,不同之处在于元组的元素不能修改.元组使用小括号,元组创建很简单,只需要在括号中添加元素,并使用逗号隔开即可,元组中只包含一个元素时,需要在元素后面添加逗号. 元组与列表的区别: 1.元组不可变,列表可变. 2.元组比列表更安全,操作速度更快. 一.创建元组 tuple1=(1,2,3,4) tuplt2=('a','b','c','d') 二.访问元组 元组的访问与列表相同,都是利用索引值来进行访问. tuple1[1] 2 tuple1[-1] 如果超出索引范围,

Python数据结构之列表元组字典的用法

数据结构的含义 在学习数据结构之前,我们先来了解下数据结构的含义.数据结构是通过某种方式(例如对元素进行编号)组织在一起的数据元素的集合,这些数据元素可以是数字或者字符,甚至可以是其他数据结构.在Python语言中,最基本的数据结构是序列(sequence).序列中的每个元素被分配一个序号----即元素的位置,称为索引或下标,索引从0开始递增. 典型的序列包括列表.元组和字符串.其中,列表是可变的(可修改),而元组和字符串是不可变的(一旦创建了就是固定的).列表.元组和字符串也是较常用的数据结构

Python数据结构:列表、字典、元组、集合

列表:shoplist = ['apple', 'mango', 'carrot', 'banana']字典:di = {'a':123,'b':'something'}集合:jihe = {'apple','pear','apple'}元组: t = 123,456,'hello' 1.列表--------------------------------------------------------------------------------------    空列表:a=[]    函

Python数据类型方法简介一————字符串的用法详解

符串是Python中的重要的数据类型之一,并且字符串是不可修改的. 字符串就是引号(单.双和三引号)之间的字符集合.(字符串必须在引号之内,引号必须成对) 注:单.双和三引号在使用上并无太大的区别: 引号之间可以采取交叉使用的方式避免过多转义: 单.双引号实现换行必须使用续行符,而三引号可直接续行不必使用续行符号. a. count,统计字符或子字符串在字符串中出现的次数 格式:S.count(sub[, start[, end]]) -> int sub 是字符串中要查询的子字符串  star

iOS中常用的四种数据持久化方法简介

iOS中常用的四种数据持久化方法简介 iOS中的数据持久化方式,基本上有以下四种:属性列表.对象归档.SQLite3和Core Data 1.属性列表涉及到的主要类:NSUserDefaults,一般 [NSUserDefaults standardUserDefaults]就够用了 @interface User : NSObject <NSCoding>@property (nonatomic, assign) NSInteger userID;@property (nonatomic,

Python数据结构:列表、元组和字典

在Python中有三种内建的数据结构——列表list.元组tuple和字典dict 列表中的项目包括在方括号中,项目之间用逗号分割 元组和列表十分类似,只不过元组和字符串一样是不可变的 即你不能修改元组.元组通过圆括号中用逗号分割的项目定义. 元组最通常的用法是用在打印语句中 age = 22 name = 'Swaroop' print '%s is %d years old' % (name, age) print 'Why is %s playing with that python?'

Python之路(第四十二篇)线程相关的其他方法、join()、Thread类的start()和run()方法的区别、守护线程

一.线程相关的其他方法 Thread实例对象的方法 # isAlive(): 返回线程是否活动的. # getName(): 返回线程名. # setName(): 设置线程名. ? threading模块提供的一些方法: # threading.currentThread(): 返回当前的线程对象. # threading.enumerate(): 返回一个包含正在运行的线程的list.正在运行指线程启动后.结束前,不包括启动前和终止后的线程. # threading.activeCount(

python第三方库的四种安装方法

讲解一下python第三方库的四种安装方法 问题场景 (我的操作系统windows): 我使用pip install selenium 发现先爆出一大段黄色警告日志,最后是两段红色的错误日志,无法成功安装, 报错日志: "ERROR:Could not find a version that satisfies the requirement selenium ERROR:No matching distrbution found for selenium" 我的解决思路:先用的是下面

python数据结构树和二叉树简介

一.树的定义 树形结构是一类重要的非线性结构.树形结构是结点之间有分支,并具有层次关系的结构.它非常类似于自然界中的树.树的递归定义:树(Tree)是n(n≥0)个结点的有限集T,T为空时称为空树,否则它满足如下两个条件:(1)有且仅有一个特定的称为根(Root)的结点:(2)其余的结点可分为m(m≥0)个互不相交的子集Tl,T2,…,Tm,其中每个子集本身又是一棵树,并称其为根的子树(Subree). 二.二叉树的定义 二叉树是由n(n≥0)个结点组成的有限集合.每个结点最多有两个子树的有序树