pythoning —— 4、数据类型(字典)

通过之前的内容,我们了解到,列表这种结构适合于将值组织到一个结构中,并通过编号对其进行引用。但是我们有时候会需要一种更便捷明了的方式存取、一种以名字来操作引用值的数据结构,这种类型的数据结构称为映射。字典是python中(本人唯一已知)的映射类型。

字典的使用

  字典这个名称已经给出了其很多的信息,其构造方式是以通过某个特定的词语(键),从而找到他的意义(值)。

  某些情况下用字典会比使用列表让程序结构更加清晰明了。比如:游戏棋盘了、存储文件修改时间了、数字电话了、地址薄了、学生成绩单了。。。

创建和使用字典

  字典可以通过如下方式创建:

>>> testdict = {"test_key1":"test_value1",test_key2":"test_value2"}

  字典有多个键及其对应的值组成,键值对之间以","分割,键是唯一的,值可以重复

dict函数

  可以通过dict函数,将(键值)对的序列建立字典,也可以通过关键字创建字典。

>>> items = [("name","jams"),("age",25)]
>>> test = dict(items)
>>> test
{‘name‘: ‘jams‘, ‘age‘: 25}>>> d = dict(name = ‘Gumbi‘,age = 23)>>> d{‘name‘: ‘Gumbi‘, ‘age‘: 23}  

基本字典操作

  字典基本行为:

    1. len(d)返回d的项的数量;
    2. d[k]返回关联到键k上的值
    3. d[k] = v将v值关联到k键上
    4. del d[k]删除键为k的项
    5. k in d 检查d中是否含有键为k的项

  键类型:字典的键不一定为整型数据,可以使任意不可变类型,如浮点型、字符串、元组等。

  自动添加:键在字典中不存在时,也可为它赋值,这样的操作,会将该键值对插入字典中,完成添加操作

  成员资格:表达式k in d查找的是键而不是值,这与列表、元组、字符串等有区别。其优势也会更加明显,在字典中查看成员资格比列表中的更高效,数据结构规模越大,效率反差越大。

>>> a = {("name","jams"):{‘age‘:23,‘add‘:‘dongsanqi‘}}
>>> a[‘testK‘] = ‘testV‘
>>> a
{‘testK‘: ‘testV‘, (‘name‘, ‘jams‘): {‘add‘: ‘dongsanqi‘, ‘age‘: 23}}
>>> ‘testK‘ in a
True
>>> del a[‘testK‘]
>>> a
{(‘name‘, ‘jams‘): {‘add‘: ‘dongsanqi‘, ‘age‘: 23}}
>>> len(a)
1

字典的格式化字符串

  之前字符串格式化中提到过可以用元组来格式化字符串,其实字典也是可以操作的。只是转换说明符要变化一下。话不多说,看代码先。

>>> phonebook = {‘king‘:‘1123‘,‘joker‘:‘1124‘,‘lucy‘:‘1125‘}>>> ‘king\‘s phone number is %(king)s‘%phonebook
"king‘s phone number is 1123"

字典方法

  就像其他内建类型一样,字典也有方法。可能不会像雷暴或字符串方法那么频繁使用,但也是灰常有用哒。

  clear

  clear用于清除字典中的所有项,这个方法为原地操作,无返回值,操作结束后,字典为空字典。

>>> test_dict = {1:‘enheng‘,‘name‘:‘biubiu‘,‘age‘:34}
>>> test_dict.clear()
>>> test_dict
{}

copy

同列表一样,是个浅拷贝,如果想要避免其带来的负面影响,可以使用深拷贝即deep copy

>>> x = {‘name‘:‘admin‘,‘val‘:[‘foo‘,‘bar‘,‘baz‘]}
>>> y = x.copy()
>>> y[‘name‘]=‘fukuda‘
>>> y[‘val‘].append(‘test‘)
>>> y
{‘val‘: [‘foo‘, ‘bar‘, ‘baz‘, ‘test‘], ‘name‘: ‘fukuda‘}
>>> x
{‘val‘: [‘foo‘, ‘bar‘, ‘baz‘, ‘test‘], ‘name‘: ‘admin‘}
>>> from copy import deepcopy
>>> z = deepcopy(x)
>>> x[‘name‘] = ‘jing‘
>>> x[‘val‘].remove(‘foo‘)
>>> x
{‘val‘: [‘bar‘, ‘baz‘, ‘test‘], ‘name‘: ‘jing‘}
>>> y
{‘val‘: [‘bar‘, ‘baz‘, ‘test‘], ‘name‘: ‘fukuda‘}
>>> z
{‘val‘: [‘foo‘, ‘bar‘, ‘baz‘, ‘test‘], ‘name‘: ‘admin‘}

fromkeys

  fromkeys使用给定的键建立新的字典,每个键都对应一个默认的值None。此外你还可以直接在dict上面调用该方法,如果不想使用None作为默认值,可以自己提供默认值。

>>> {}.fromkeys(‘name‘,‘age‘,‘add‘)
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
TypeError: fromkeys expected at most 2 arguments, got 3
>>> {}.fromkeys([‘name‘,‘age‘,‘add‘])
{‘add‘: None, ‘age‘: None, ‘name‘: None}
>>> dict.fromkeys([‘name‘,‘age‘,‘add‘])
{‘add‘: None, ‘age‘: None, ‘name‘: None}
>>> dict.fromkeys([‘name‘,‘age‘,‘add‘],‘unknown‘)
{‘add‘: ‘unknown‘, ‘age‘: ‘unknown‘, ‘name‘: ‘unknown‘}

get

  get是个体面的方法,一般来说,如果你试图直接用d[k]方式访问字典中的不存在的项,会报错,这就尴尬了,而get就不会。他会返回一个None,它还可以指定默认值,这样就会提高程序的容错率。

>>> d = {}
>>> print(d[‘name‘])
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
KeyError: ‘name‘
>>> print(d.get(‘name‘))
None
>>> print(d.get(‘name‘,‘doubi‘))
doubi

pop

  pop方法用来获得对应给定键的值,然后将这个键值对从字典中移除

>>> d = {‘x‘:1,‘y‘:2}
>>> d.pop(‘x‘)
1
>>> d
{‘y‘: 2}

setdefault

  setdefault某种意义上与get类似,能够获得与给定键相关联的值,除此之外,它还是get的升级,如果该值不存在,则会设定相应的键值。如果键值存在,就不会改变字典,默认值可选。如果不设定,会默认使用None。

>>> d = {}
>>> d.setdefault(‘name‘,‘king‘)
‘king‘
>>> d
{‘name‘: ‘king‘}
>>> d.setdefault(‘name‘,‘fukuda‘)
‘king‘
>>> d
{‘name‘: ‘king‘}
>>> d.setdefault(‘age‘)
>>> d
{‘age‘: None, ‘name‘: ‘king‘}

update

  update方法可以利用一个字典项更新另一个字典,提供的字典中的项会被添加到旧的字典中,若有相同的键,则会覆盖。

>>> d
{‘age‘: None, ‘name‘: ‘king‘}
>>> d = {‘name‘:‘king‘,‘age‘:23,‘add‘:‘dongsanqi‘}
>>> du = {‘name‘:‘king‘,‘age‘:24,‘phone‘:‘1134‘}
>>> d.update(du)
>>> du
{‘age‘: 24, ‘name‘: ‘king‘, ‘phone‘: ‘1134‘}
>>> d
{‘age‘: 24, ‘phone‘: ‘1134‘, ‘name‘: ‘king‘, ‘add‘: ‘dongsanqi‘}
时间: 2025-01-14 14:09:47

pythoning —— 4、数据类型(字典)的相关文章

Python:基础数据类型--字典

基础数据类型--字典 Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 字典的每个键值(key=>value)对用冒号(:)分割,每个对之间用逗号(,)分割,整个字典包括在花括号({})中 ,格式如下所示: 键必须是唯一的,但值则不必. d = {key1 : value1, key2 : value2 } 字典:增 dic = {'name': '老男孩','age': 10000, 'sex': '男'} dic['hobby'] = 'old

python 数据类型 ----字典

字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values 字典由一对key:value 组成的 python中常用且重量级的数据类型 1. key , keys, values id_db = { 'jboss':{ 'mycis': '10.88.130.38', 'ec':'10.88.130.29', 'rds':'10.88.130.25' }, 'jetty':{ 'mycis':'10.88.130.37', 'ec':'

010-python基础-数据类型-字典

字典一种key - value 的数据类型,key是唯一的. 字典是无序的,默认. 一.创建 1 info = { 2 'stu1101': "TengLan Wu", 3 'stu1102': "LongZe Luola", 4 'stu1103': "XiaoZe Maliya", 5 } 二.增加 1 >>> info["stu1104"] = "苍井空" 2 >>>

组合数据类型字典

dict是一种无序的组合数据类型,其中包含0个或多个键-值对,可以对其进行数据项的添加或移除操作. 创建字典 d1 = {“id”:1991,"name":"yoyo","size":6} >>> d1{'id': 1991, 'size': 6, 'name': 'yoyo'}>>> d1["id"]  #查询1991 >>> d1["age"] =

基础数据类型——字典

一:字典 字典是python中非常重要的数据类型,在python中唯一一个映射的数据类型.字典中key是唯一的且 是不可变数据类型,value:任意数据类型.如: dic = {"name":"jin","age":18,"sex":"male"},字典能存放大量的数据类型,且关联性较强. 二:关于字典的相关操作 1,增 dic["key"]=value,有key,就修改键值对,没有ke

Python全栈之路----数据类型—字典

字典:可变,一种key-value的数据类型 info = { 'stu1101' : 'TengLan Wu' , 'stu1102' : 'LongZe Luola' , 'stu1103' : ' XiaoZe Maliya' } 1.特点:key-value结构:key必须可hash(被hash值不变),且必须唯一.必须为不可变类型:无序的(因为无索引,通过key查询):查找速度快      2.基本操作:创建,添加,查找,修改,删除,清空 1 >>> info = { 2 ..

高级数据类型--字典(dict)

一.字典介绍 dict(字典) 是 除列表以外 Python 之中 最灵活 的数据类型.字典同样可以用来 存储多个数据,通常用于存储 描述一个 物体 的相关信息 和列表的区别: 列表 是 有序 的对象集合 字典 是 无序 的对象集合 字典用 {} 定义. 字典使用 键值对 存储数据,键值对之间使用逗号 , 分隔: 键 key 是索引 值 value 是数据 键 和 值 之间使用冒号 : 分隔 键必须是唯一的 值 可以取任何数据类型,但 键 只能使用 字符串.数字或 元组 xiaoming = {

python数据类型:字典dict常用操作

字典是Python语言中的映射类型,他是以{}括起来,里面的内容是以键值对的形式储存的: Key: 不可变(可哈希)的数据类型.并且键是唯一的,不重复的. Value:任意数据(int,str,bool,tuple,list,dict,set),包括后面要学的实例对象等. 在Python3.5版本(包括此版本)之前,字典是无序的. 在Python3.6版本之后,字典会按照初建字典时的顺序排列(即第一次插入数据的顺序排序). 当然,字典也有缺点:他的缺点就是内存消耗巨大. 优点:查询速度快,映射型

基本数据类型—字典

引子 之前我们已经学过了字典和元组,我们可以把全班同学的名字保存在列表中,并能够对这些名字进行增删改查了.现在我们又有了一个新的需求,我们不仅要保存每个同学的姓名,还想要保存他的年龄.身高等等.应该如何保存呢? 这里可以引导学生像组合列表这里思考:[[name,age,high],[],……,[]] 但是这样就有一个问题,如果我们想修改某一个同学的信息,需要遍历整个列表,这种方式非常麻烦. 当然我们也可以用index寻找这个学员的信息,但是前提是我们必须知道这个学员的姓名年龄和身高,这样我们使用

Python (从数据类型~字典)的测试题

Python基础数据类型考试题 一.基础题:1.简述变量命名规范 1.变量只能有字母,数字和下划线组成,且数字不能开头 2.变量不能使用关键字 3.变量不能用大写英文字母尽量,因为Python默认大写是常量 2.字节和位的关系 8位 = 1字节 3.'二哥'使用utf-8编码时,占的位数和字节数,是多少?使用gbk编码时,占的位数和字节数时多少? utf-8: 占的位数是6字节,48位 gbk: 占的位数是4字节,32位 4.默写字符串的12个功能,并描述其作用. 1.append() : 增加