字典的特性
1.字典的元素是键值对,通过键来访问值,所以字典中的键不能重复,且不可变
2.字典不支持索引和切片,通过键来查询值
3.字典是无序的对象集合,列表是有序的对象集合,两者区别在于,字典中的元素是通过键来存取的
4.字典是可变的,可以任意嵌套
字典的创建与删除
字典用 {} 标识
键与值用:隔开,键值对之间用 , 隔开
subjects={'chinese'=88,'math'=90,'english'=98}
元组可以作为字典的键,但列表不可以,因为字典要求键必须是不可变类型,但列表是可变类型。
内置函数dict()来创建字典
键与值用:隔开,键值对之间用,隔开
subjects1=[('math',90),('chinese',89)]
subjects2=[['math',90],['chinese',89]]
dict1=dict(subjects1)
dict2=dict(subjects2)
print(dict1)
print(dict2)
dict3=dict(math=9,chinese=90)#通过指定参数创建字典,键不用加''引号
print(dict3)
keys=['math','chinese','english']
values=[99,89,79]
dict4=dict(zip(keys,values))#利用zip函数
print(dict4)
上面代码中zip()函数用于将可迭代的对象作为参数,将对象中对应的元素打包成一个元组,然后返回由这些元组组成的列表
如下:
x=[1,2,3]
y=['a','b','c']
zipped=zip(x,y)
print(zipped)
print(list(zipped))
#<zip object at 0x000001836D1A3EC0>
#[(1, 'a'), (2, 'b'), (3, 'c')]
del命令可以删除字典,或者用clear()方法清空字典中的所有元素,字典变成空字典
访问字典
通过键访问值:
subject={'math':90,'chinese':89}
print(subject['math'])
#90
通过get()方法获取指定键的值
subject={'math':90,'chinese':89}
print(subject.get('math'))
通过items()获取键值对列表,keys()方法获取键列表,values()获取值列表
subject={'math':90,'chinese':89,'english':78}
items=subject.items()
print(type(items))
print(items)
print(list(items))
#通过list()函数将其变成列表
keys=subject.keys()
print(keys)
values=subject.values()
print(values)
<class 'dict_items'>
dict_items([('math', 90), ('chinese', 89), ('english', 78)])
[('math', 90), ('chinese', 89), ('english', 78)]
dict_keys(['math', 'chinese', 'english'])
dict_values([90, 89, 78])
for循环对items()返回的结构进行遍历
for keys,values in dict1.items:
print(keys,values)
for items in dict1:
print('items',dict1[items])
添加,修改和删除字典元素
字典是可变序列
可以直接添加,修改,注意 键具有唯一性
subject={'math':90,'chinese':89,'english':78}
subject['art']=90
subject['math']=89
del subject['chinese']
print(subject)
#{'math': 89, 'english': 78, 'art': 90}
对象的update()方法,用一个字典所包含的键值对来更新已有的字典。
在执行update()方法时,如果被更新的字典中包含对应的键值对,那么原值会被覆盖,若不包含则键值对会被添加进去。如下
subject={'math':90,'chinese':89,'english':78}
subject.update({'chinese':78,'art':79,'english':70})
print(subject)
#{'math': 90, 'chinese': 78, 'english': 70, 'art': 79}
字典推导式
{表达式 for 迭代变量 in 可迭代对象 [ if条件表达式] }
wordlist=['aaa','bbb','ccc']
worddict={key:len(key) for key in wordlist}
print(worddict)
subject=['math','chonese','english']
score=[90,99,89]
dict1={i:j for i,j in zip(subject,score)}
print(dict1)
#交换现有字典中各键值对的键和值
dict2={i:j for j,i in zip(subject,score)}
{'aaa': 3, 'bbb': 3, 'ccc': 3}
{'math': 90, 'chonese': 99, 'english': 89}