python-字典

#一般来讲,按照下标查找元素比按照关键字查找元素效率更高;但在字典中,按关键字查找元素,效率极高
#字典属于非序列式容器,数据存储杂乱无章,占内存较大,但是查找效率高,用空间换时间
#字典属于非序列式容器,不支持切片(报错:unhashable type)、不支持索引操作(报错:key error)
#序列式容器偏操作(增删改),对数据操作性高;非序列式容器偏查找,查找性能高
#字典的查询性能优于列表

#字典也是一种可存储任意类型数据的对象,格式:my_dict={key1: value1, key2: value2}
'''
【key(键):value(值)】表示一个值;
key为键,一般是唯一的,不可重复,若重复,最后的一个键值会替换前面的;
value是值,可重复
在字典中,是基于key来查找值的,所以不宜重复;
'''


'''1、字典的定义 dict-----------------------------------------------------------------'''

my_dict={'name': 'Obama', 'age': 38, 'gender':'男'} #【name】为键,【Obama】为值,【'name': 'Obama'】为对
print(my_dict['name'])  #返回值:Obama
my_dict['gender']='女' #将键:gender的值:男 改为 女

'''2、访问字典元素:[key]/get(key)----------------------------------------------------'''
#使用[]中括号这种方式访问字典中元素的方式,如果【键不存在,则会报错,程序终止】
#为了避免程序终止导致的各种问题,可以使用get方法代替中括号;
#在get方法下,若键不存在,会返回一个默认值:None【或指定默认值】,程序不会终止运行
print(my_dict.get('gender')) #通过get方法,获得键为gender的元素值,结果为:女
print(my_dict.get('school')) #此字典中无school键,不指定默认值,会返回:None
print(my_dict.get('school','不存在该key')) #此字典中无school键,指定默认值,会返回:不存在该key

'''3、添加/修改元素---------------------------------------------------------------------'''
my_dict={'name': 'Obama', 'age': 38, 'gender':'男'}
my_dict['score']=99 #添加分数元素,返回:{'name': 'Obama', 'age': 38, 'gender': '男', 'score': 99}
#如果key不存在,则是新增元素;如果存在,则是覆盖/修改原来的值
my_dict['name']='trump' #{'name': 'trump', 'age': 38, 'gender': '男', 'score': 99}

'''4、删除字典元素:del、clear-----------------------------------------------------------'''
my_dict={'name': 'Obama', 'age': 38, 'gender':'男'}
#删除指定 键值对
del my_dict['age']  #返回{'name': 'Obama',  'gender':'男'}
#清空字典
my_dict.clear()  #删除所有元素
#删除整个字典
del my_dict
'''---------------del知识补充--------------'''
#1、del可以删除键值对或者整个字典
#2、删除某个变量
a=10
print('a=', a)   #返回:a=10
del a   #删除a变量
print('a=', a)   #报错:name ‘a’is not defined
#3、删除列表中的元素
my_list=[1,2,3,'aaa']
del my_dict[0] #删除下标为0的值,返回:[2,3,'aaa']

'''4、字典的遍历【间接遍历】---------------------------------------------------------------------'''
#思路:字典中的元素不是有序排列的,若要遍历:1、将所有key转换为一个列表;2、或者将所有值转换为列表
my_dict={'name': 'Obama', 'age': 38, 'gender':'男','score': 99}
#1、将所有key转换为一个列表
key_list=my_dict.keys() #返回:dict_keys(['name', 'age', 'gender', 'score'])
#返回的是dict_keys类型,可以转换key_list为列表,再打印;或者直接在打印的时候转换:print(list(key_list))
key_list=list(key_list) #返回列表:['name', 'age', 'gender', 'score']

#2、或者将所有值转换为列表
values_list=my_dict.values() #返回:dict_values(['Obama', 38, '男', 99])
#返回的是dict_values类型,可以转换values_list为列表,再打印;或者直接在打印的时候转换:print(list(values_list))
values_list=list(values_list) #返回列表:['Obama', 38, '男', 99]

#3、将键值对同时转换为列表
key_values_list=my_dict.items() #返回:dict_items([('name', 'Obama'), ('age', 38), ('gender', '男'), ('score', 99)])
#转化dict_items为列表,再输出值
key_values_list=list(key_values_list)
print(key_values_list) #返回:[('name', 'Obama'), ('age', 38), ('gender', '男'), ('score', 99)]
#返回的为 键值对 列表,但是列表里面的 键值对 都是以 元组形式 存在
'''使用for循环遍历字典'''
for key_values in key_values_list:
    print(key_values,end='') #打印出每个键值对元组:('name', 'Obama')('age', 38)('gender', '男')('score', 99)
    #或者:若想将key和value分开显示,可以分别设置名称
    print('key:',key_values[0],'value:',key_values[1])
    #结果为:
    # key: name value: Obama
    # key: age value: 38
    # key: gender value: 男
    # key: score value: 99
 '''使用while循环遍历字典'''
my_dict={'name': 'Obama', 'age': 38, 'gender':'男','score': 99}
my_list=list(my_dict.items()) #直接转换成键值对列表:[('name', 'Obama'), ('age', 38), ('gender', '男'), ('score', 99)]

a=0
while a<len(my_list):
    print('key:',my_list[a][0],'value:',my_list[a][1] )
    a+=1
#结果为:
# key: name value: Obama
# key: age value: 38
# key: gender value: 男
# key: score value: 99

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值