python:5:字典

来源:互联网 发布:盈透证券骗局 知乎 编辑:程序博客网 时间:2024/05/17 22:32

第一章:python

第五节: 字典及相关函数

1,字典基本用法

字典是键值的映射关系;在字典中,必须存在键值对,键和值之间必须用冒号分隔
>>> d={} #创建一个空字典
>>> d={'name': 'earth', 'port': 80} #存在两个键值对
可以用内建函数fromkeys()创建具有相同值的字典
>>> d={}.fromkeys(('x', 'y'), -1) #或者如下方法
>>> d={}.fromkeys(('x', 'y'), -1)
>>> d
{'y': -1, 'x': -1}
可以利用keys()和values()函数查看字典中的键值
>>> d={'name': 'earth', 'number': 80}
>>> d.keys() #以列表形式输出
['name', 'number']
>>> d.values()
['earth', 80]
也可以查看字典中某个键对应的值
>>> d['name']
'earth'
可通过原有字典的键值反转,产生原有字典键为值,值为键的一个新字典
>>> d2={}
>>> for k,v in d.items():
... ····d2[v]=k
len()可查看键值对数目,len(dict)

2,字典类型内建函数

dict.clear()
删除字典中的所有元素

dict.fromkeys(seq, val=None)
创建并返回一个新字典,以seq中的元素做该字典的键,val做该字典中所有键对应的初始值
>>> d={'age': 27, 'name': 'zhen'}
>>> l=['age', 'name']
>>> dict.fromkeys(l,)
{'age': None, 'name': None}
>>> dict.fromkeys(d.keys(), d.values())
{'age': [27, 'zhen'], 'name': [27, 'zhen']}

dict.get(key, default=None)
对字典dict中的键key,返回它对应的值value,如果字典中不存在此键则返回default的值(注意,参数default的默认值为None)
>>> d={'length': 180, 'age': 27, 'name': 'zhen'}
>>> d.get('length', 'no this element')
180
>>> d.get('face', 'no this element')
'no this element'

dict.keys()
返回一个包括字典中键的列表

dict.values()
返回一个包含字典中值的列表

dict.items()
返回一个包含字典中键值对元组的列表
>>> d={1:2,3:4}
>>> d.items()
[(1, 2), (3, 4)]

dict.pop(key[, default])
和方法get()相似,如果字典中key键存在,删除并返回dict[key];如果key键不存在,则由dict[key]=default为他赋值;但如果没有给出default值,则引发KeyError异常
>>> d={1: 2, 3: 4, 5: 6}
>>> a=d.pop(1)
>>> a
2
>>> d
{3: 4, 5: 6}
>>> d.pop('length', 'no this element')
'no this element'

dict.update(dict2)
将字典dict2的键值对添加到字典dict中,相当于合并两个字典
>>> d={'age': 27, 'name': 'zhen'}
>>> d2={'length': 180}
>>> d.update(d2)
>>> d
{'length': 180, 'age': 27, 'name': 'zhen'}

3,创建字典

方法 1
已知两个列表,创建列表元素之间关系的字典
>>> list1=['length', 'age', 'name', 'weight']
>>> list2=[180, 27, 'zhen', 120]
>>> dict(zip(list1, list2))
{'length': 180, 'age': 27, 'weight': 120, 'name': 'zhen'}
方法 2
利用for循环创建键值对关系
>>> d={} #先定义一个空字典
>>> for x in range(len(list1)):
... ····d[list1[x]]=list2[x] #字典中产生映射关系
>>> d
{'length': 180, 'age': 27, 'weight': 120, 'name': 'zhen'}
注意:
第一点声明:作为字典的键必须是可哈希的,即字典的键必须有唯一的值,字典内不允许存在两个相同的键,但可以存在两个相同的值,所以说上述作为字典键的list1的各元素必须是唯一的;
第二点声明:既然字典是一种映射关系,不存在列表的元素排列关系,所以list1当中的元素位置在生成字典之后元素顺序会打乱。

3,实例,读取文件,并根据对应关系生成字典

文件内容如下,list文件
LD7d9821_S19_L001_R1_001.fastq.gz Chan7
LD7d9832_S19_L001_R2_001.fastq.gz Tate8
(文件分为一行,文件和名称中间以制表符连接)
>>> all=[x.strip() for x in open('list')]
>>> d={}
>>> for x in range(len(all)):
... ····d[all[x].split('\t')[0]]=all[x].split('\t')[1]
>>> d
{'LD7d9832_S19_L001_R2_001.fastq.gz': 'Tate8', 'LD7d9821_S19_L001_R1_001.fastq.gz': 'Chan7'}

原创粉丝点击