python字典

字典的特性

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}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值