字典(当索引不好用时)

  列表这种数据结构适合于将值组织到一个结构中,并且通过编号对其进行引用。在本节中,将介绍一种通过名字引用值得数据结构。这种类型的数据结构称为映射(mapping)。字典是Python中唯一内建的映射类型。字典中的值并没有特殊的顺序,但都是存储在一个特定的键(key)下。键可以是数字、字符串甚至是元组。

字典

字典的特性:

  dict是无序的

  key是唯一的,故天生去重

  注意:字典中的键是唯一(其他类型的映射也如此),而值并不唯一。

创建和使用字典

创建一个字典

>>> student={"name":"Mike",‘age‘:23}
>>> student
{‘age‘: 23, ‘name‘: ‘Mike‘}

也可以用dict函数,通过其他映射(比如其他字典)或者(键,值)对的序列建立字典:

>>> items=[(‘name‘,‘Mike‘),(‘age‘,42)]
>>> d=dict(items)
>>> d
{‘age‘: 42, ‘name‘: ‘Mike‘}

dict函数也可以通过关键字参数来创建字典:

>>> d=dict(name=‘Mike‘,age=23)
>>> d
{‘age‘: 23, ‘name‘: ‘Mike‘}

基本字典操作

字典的基本操作在很多方面与序列(sequence)类似:

方法 说明
len(d) 返回d中项的数量(键值对)
d[k] 返回关联到键k上的值
d[k]=v 将值v关联到键k上
del d[k] 删除键为k的项

k in d

检查d中是否含有键为k的项

注意:在字典中检查键的成员资格比在列表中检查值的成员资格更高效,数据结构规模越大,两者的效率差距越明显。

字典的格式化字符串:

  在每个转换说明符(conversion specifier)中的%字符后面,可以加上键(用圆括号括起来),后面再跟上其他说明元素:

>>> info={‘name‘:‘Mike‘,‘age‘:23,‘job‘:‘IT‘,‘salary‘:10000}
>>> "%(name)s is %(age)s and his job is %(job)s."%info
‘Mike is 23 and his job is IT.‘

字典方法

>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}
>>> info[‘address‘]=‘广东‘
>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000, ‘address‘: ‘广东‘}

{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000, ‘address‘: ‘广东‘}
>>> info[‘salary‘]=12000
>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 12000, ‘address‘: ‘广东‘}

clear

  clear方法清除字典中所有的项。这是个原地操作(类似于list.sort),所以无返回值(或者返回值为None)

>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}
>>> returned_value=info.clear()
>>> info
{}
>>> print(returned_value)
None

fromkeys

  fromkeys方法使用给定的键建立新的字典,每个键都对应一个默认的值None。

>>> {}.fromkeys([‘name‘,‘age‘])
{‘age‘: None, ‘name‘: None}

#通过dict方法
>>> dict.fromkeys([‘job‘,‘salary‘])
{‘job‘: None, ‘salary‘: None}

#自定义初始value
>>> dict.fromkeys([‘job‘,‘salary‘],‘(unknow)‘)
{‘job‘: ‘(unknow)‘, ‘salary‘: ‘(unknow)‘}

查:(get方法)

  一般来说,如果试图访问字典中不存在的项是会报错,get方法是个更宽松的访问字典项的方法,当使用get方法访问一个不存在的键时,没有任何异常,而得到None值,还可以自定义“默认”值,替换None:

#不用get
>>> info={‘name‘:‘Mike‘,‘age‘:23,‘job‘:‘IT‘,‘salary‘:10000}
>>> info[‘address‘]
Traceback (most recent call last):
  File "<pyshell#40>", line 1, in <module>
    info[‘address‘]
KeyError: ‘address‘

#使用get
>>> info.get(‘name‘)
‘Mike‘
>>> print(info.get(‘address‘))
None
>>> print(info.get(‘address‘,‘不存在‘))
不存在

items

  items方法将字典所有的项以列表方式返回,列表中的每一项都表示为(键,值)对的形式,但是项的返回时并没有遵循特定的次序:

>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}
>>> info.items()
dict_items([(‘age‘, 23), (‘job‘, ‘IT‘), (‘name‘, ‘Mike‘), (‘salary‘, 10000)])

keys:keys方法将字典中的键一列表的形式返回:

>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}
>>> info.keys()
dict_keys([‘age‘, ‘job‘, ‘name‘, ‘salary‘])

values:一列表的形式返回字典中的值,返回值的列表中可以包含重复的元素

:(pop、popitem、del)  

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

>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}
>>> info.pop(‘salary‘)
10000
>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘}

  popitem方法(随机删)类似于list.pop,后者会弹出列表的最后一个元素。但不同的是,popitem弹出随机的项,因为字典是无序的。(该方法用首先获取键的列表)

>>> info
{‘age‘: 23, ‘job‘: ‘IT‘, ‘name‘: ‘Mike‘}
>>> info.popitem()
(‘age‘, 23)
>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘}

setdefault

  setdefault方法在某种程度上类似于get方法,能够获得与给定值相关联的值,除此之外,setdefault还能在字典中不含有给定键的情况下设定相应的键值。

>>> d={}
>>> d.setdefault(‘name‘,‘待定‘)
‘待定‘
>>> d
{‘name‘: ‘待定‘}
>>> d[‘name‘]=‘Jack‘
>>> d
{‘name‘: ‘Jack‘}

update

  update方法可以利用一个字典更新另一个字典:

>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 8000}
>>> new_salary={‘salary‘:10000}
>>> info.update(new_salary)
>>> info
{‘job‘: ‘IT‘, ‘name‘: ‘Mike‘, ‘salary‘: 10000}

  提供的字典中的项会被添加到旧的字典只能怪,若有相同的键则会覆盖。update方法可以使用与调用dict函数(或者类型构造函数)同样的方式进行调用。这就意味着update可以和映射、拥有(键,值)对的队列(以及其他可迭代对象)以及关键字参数一起调用。

 

时间: 2024-10-10 21:59:57

字典(当索引不好用时)的相关文章

4.字典:当索引不好用时

字典:当索引不好用时 字典是python中唯一内建的map类型 创建: key可以是内置类型,或者元组 通过大括号好: phonebook{'alice': '2341', 'beth':'9102'} 通过dict函数 键值对列表做参数 >>> items=[("name", "Gumby"), ("age", 42)] >>> dict(items) {'age': 42, 'name': 'Gumby'}

《python基础教程》第4章字典:当索引不好用时 读书笔记

第四章 字典:当索引不好用时 1.通过名字来引用值的数据结构,这种数据结构叫做映射,字典是python中唯一内建的映射类型. 2.len():可以返回字典中的键-值对的数量. 3.del 关键字也可以删除字典中的项. 4.in 也可以检查字典中是否存在某一项. 5.字典中的键可以是任意不可变的数据类型,如浮点型,元组,字符串. 6.字典也可以用于格式化字符串. 7.字典方法: ①clear():清空字典中的所有项. ②copy():浅复制一个字典,感觉没什么用,从copy模块中用deepcopy

Python基础--字典:当索引不好用时

当列表或是元组的索引不能达到我们的目的时,我们想到了还有一种序列,即字典. 创建 字典 由多个键以及相应的值构成的键-值对组成. 键唯一.值能够不唯一 phonebook = {'xidada':'110', 'lizongli':'112', 'wangqishan':'119'} dict函数创建字典 使用dict函数,将其它映射或序列建立字典 >>>items = [('name', 'xidada'), ('age', 64)] >>>d = dict(item

第4章 字典:当索引不好用时

通过名字引用值的数据结构,这种结构类型称为映射(mapping).字典是Python中唯一内建的映射类型.字典中的值并没有特殊的顺序,但是都存储在一个特定的键(key)里.键可以是数字.字符串甚至是元组. 4.1 字典的使用 现实中的字典及在Python中的字典都进行了构造,从而可以轻松查到某个特定的词语(key),从而找到它的定义(值). 某些情况下,字典比列表更加适用,比如: 1.表征游戏棋盘的状态,每个键都是由坐标值组成的元组: 2.存储文件修改次数,用文件名作为键: 3.数字电话/地址簿

字典:当索引不好用时

映射:映射可以使用任意不可变对象标识元素.最常用的类型是字符串和元组.Python唯一内建的映射类型是字典. 利用字典格式化字符串:可以通过在格式化说明符中包括名称(键)来对字典应用字符串格式化操作.当在字符格式化中使用元组时,还需要对元组中每一个元素都设定"格式化说明符".在使用字典时,所用的说明符可以比在字典中用到的项少. 字典的方法:字典有很多方法,调用的方式和调用列表以及字符串方法的方式相同.

读书笔记--《Python基础教程第二版》-- 第四章 字典:当索引不好用时

字典里的键可以是数字.字符串.元组 4.1 字典的使用 >>> name=['Alice','Beth','Earl'] >>> numbers=['2341','9102','0142'] #电话号码必须使用字符串,二不能是整数,因为电话号码可能以0开头 >>> numbers[name.index('Beth')] '9102' 4.2 创建和使用字典 >>> data ={'title':'My Home Page','text

04、字典:当索引不好用时

字典(Dictionary) 1.创建和使用字典:字典由多个键及与其对应的值构成的对组成(我们也把键/值对称为项),每个键和值之间用冒号:隔开,项之间用逗号,隔开,整个字典用大括号隔开{}. 2.dict: 该函数可以通过其他映射(比如其他字典)或者(键,值)这样的序列对建立字典      3.clear: 该方法清楚字典中所有的项 4.copy: 浅复制,该方法返回一个具有相同键-值的一对新字典.(如果替换,原始字典不受影响,修改了某个值,原始字典也会改变) 5.deepcopy: 深复制,对

第025讲:字典:当索引不好用时 | 课后测试题及答案

0.当你听到小伙伴们在谈论“映射”.“哈希”.“散列”或者“关系数组”的时候,事实上他们就是在讨论什么呢? me:字典 1.尝试一下将数据('F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115)创建为一个字典并访问键 'C' 对应的值? me: dict1={'F': 70, 'C': 67, 'h': 104, 'i': 105, 's': 115} print(dict1["C"]) 2. 用方括号(“[]”)括起来的数据我们叫列表,那么使用

python--15 字典:当索引不好用

字典是python唯一的影射类型 hash >>> brand = ['李宁', '耐克', '阿迪达斯'] >>> slogan = ['一切皆有可能', 'Just do it','Impossible is nothing'] >>> print('李宁的口号是:',slogan[brand.index('李宁')]) 李宁的口号是: 一切皆有可能 字典不是序列类型 ,是映射类型 字符串 列表 元组是序列类型 创建和访问索引   标志性符号--花