博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
笔记(六)
阅读量:3934 次
发布时间:2019-05-23

本文共 4976 字,大约阅读时间需要 16 分钟。

字典   成对出现{key:value,key:value,...}

compare:

列表 元组 字典
[] () {}
list tuple dict
element element key:value(键值对)

 

 

 

 

 

由列表元组的一个操作变成字典的一对操作

关键字作为key,想保留的作为value

定义空字典:

dict1 = {} #定义空字典dict2 = dict() #也是空字典,不常用#list1 = list()  tuple = tuple() 列表元组同理

有内容字典定义的正确范例:   成对出现

dict3 = {'ID':'43132','name':'lucky','age':'18'}  #记录一个人的信息print(dict3)'''运行结果:{'ID': '43132', 'name': 'lucky', 'age': '18'}'''

dict()函数

dict1 = dict(('name','lucky'))  #底层做法:{'name':xxx,'lucky':xxx}'''运行结果:ValueError: dictionary update sequence element(更新序列元素) #0 has length 4; 2 is required'''#正确做法dict1 = dict([('name','lucky'),('age',18)]) #列表里放元组#或元组里放元组  dict1 = dict((('name','lucky'),('age',18)))print(dict4)'''运行结果:{'name': 'lucky', 'age': 18}

('name','lucky')-->列表元素1    ('age',18)-->列表元素2

错误示范:

dict5 = dict([(1,2,3),(4,5),(6,8),(9,0)])'''运行结果:ValueError: dictionary update sequence element #0 has length 3; 2 is required'''#列表转字典前提:必须两两存在

总结:不用分太细,元组列表字典集合等等,这些格式其实都为一件事情服务:如何组织大于一个元素的序列。这些都是组织方式的描述,所以他们也统称为序列。

增删改查:

增加    格式:dict1[key] = value

特点:按上面的格式,如果字典中存在同名的key,则发生值的覆盖(新值覆盖旧值)

           若没有同名key,则实现添加的功能{key:value},添加到字典中

           key唯一

dict1 = {}dict1['brand'] = 'huawei'print(dict1)dict1['brand'] = 'mi'print(dict1)dict1['type'] = 'p30 pro'dict1['price'] = '8000'dict1['color'] = 'black'print(dict1)#根据key获取值,如果key在字典中没有存在则报错:keyerror'''运行结果:{'brand': 'huawei'}{'brand': 'mi'}{'brand': 'mi', 'type': 'p30 pro', 'price': '8000', 'color': 'black'}'''

案例:

'''用户注册功能usernamepasswordemailphone'''print('---欢迎注册coc账号---')#模拟数据库database = []while True:    username = input('输入用户名:')    password = input('输入密码:')    repassword = input('确认密码:')    email = input('输入邮箱:')    phone = input('输入手机号码:')    #定义字典保存一个人的信息    user = {}    #将信息保存到字典中    user['username'] = username    if password == repassword:        user['password'] = password    else:        print('两次密码不一致!请重新输入!')        continue #跳过后面代码不执行,重新执行while    user['email']=email    user['phone']=phone    #保存到数据库    database.append(user)    answer = input('是否继续注册用户?(y/n)')    if answer!='y':        break #跳出whileprint('database')

增加元素compare:

list1.append(element)

dict1[ ]=value

修改元素compare:

list1[index]=newvalue

dict1[key]=newvalue

查询元素compare:

list1[index]--->index

dict1[key]--->value    key即列表的下标,根据key获取它的value值

list1 = [3,9,4,1]print(list1[2])dict1 = {'0':'张三','1':'李四','2':'王五'}print(dict1['2'])#是不是一定得是字符串?dict2 = {'张三':90,'李四':100,'王五':80}print(dict2['王五'])'''运行结果:4王五80'''

查询   items()    values()   keys()

辅助记忆图:

items() 将字典的键值对保存在元组中,以列表形式展示

dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}#考试成绩大于90分的人#尝试对字典进行遍历for key,value in dict2:    print(key,value)for i in dict2:    print(i)#单独遍历结果为字典的keyprint(dict2.items())  #items()返回的是列表for i in dict2.items():#dict2.items()相当于[(),(),()],将字典的键值对保存为列表形式    print(i)for key,value in dict2.items():#元组里的值分别赋值key和value    #print(key,value)    # a,b=('aa','bb'),拆包赋值    if value>90:        print(key)'''运行结果:张 三李 四王 五赵 六张三李四王五赵六dict_items([('张三', 90), ('李四', 100), ('王五', 80), ('赵六', 95)])('张三', 90)('李四', 100)('王五', 80)('赵六', 95)李四赵六'''

values()取出字典中所有值,保存到列表中

dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}result = dict2.values()print(result)#求所有学生成绩的平均分for score in dict2.values():    print(score)totle = sum(dict2.values())average = totle/len(dict2.values())print(average)

keys()取出字典中所有关键字,保存到列表中

dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}#有dict2.values(),联想就有dict2.keys()names = dict2.keys()print(names)#列表可以遍历for name in names:    print(name)

字典的内置函数:get(key,default)  返回key对应的值,取不到值不会报错,返回default的值,默认为None

dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}print('王五' in dict2) #in也可以用于字典操作,判断元素有没有在字典key中间#不想找不到就报错#print(dict2['赵飞'])  报错:KeyError: '赵飞'print(dict2.get('赵六'))print(dict2.get('赵飞'))print(dict2.get('赵飞',99))'''运行结果:True95None99'''

删除

del dict[key]

dict.pop(key,[default])   根据key删除字典中的键值对,返回值是删除成功的键值对的值。若没找到关键词,返回默认值 

:中括号的内容可有可无

dict.popitem()   随机删除字典中的键值对(一般从末尾删除)

dict.clear()  同列表的clear()

list1=[1,9,4,0]del list1[1]print(list1)#上述为列表的删除dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}del dict2['王五']print(dict2)#del dict2['haha'] 报错:KeyError: 'haha'#dict2.remove('李四') 报错:AttributeError: 'dict' object has no attribute 'remove'result = dict2.pop('李四','80')print(result)print(dict2)result = dict2.pop('李xiao四','字典中没有该关键词')print(result)print('*'*30)dict2 = {'张三':90,'李四':100,'王五':80,'赵六':95}result = dict2.popitem()print(result)print(dict2)result = dict2.popitem()print(result)print(dict2)dict2.clear()print(dict2)

其他内置函数

update()   {}+{},相当于合并

dict1 = {0:'tom',1:'jack',2:'lucy'}dict2 = {0:'lily','4':'ruby'}print(dict1.update(dict2))print(dict1)#dict1 = dict1+dict2  TypeError: unsupported operand type(s) for +: 'dict' and 'dict''''运行结果:None{0: 'lily', 1: 'jack', 2: 'lucy', '4': 'ruby'}'''

fromkeys(seq,[default])   将seq转成字典,若没有指定默认value,则用None代替

dict1 = {0:'tom',1:'jack',2:'lucy'}dict2 = {0:'lily','4':'ruby'}list1 = ['aa','bb','cc']new_dict = dict.fromkeys(list1,10)print(new_dict)'''{'aa': 10, 'bb': 10, 'cc': 10}'''

一周总结:

列表list:保存多个元素,元素有顺序。可以通过下标找到对应的元素。可以增删改查。

元组tuple:保存多个元素,不可以增删改元素,可以查询元素。

字典dict:键值对保存元素,键唯一。可以增删改查。

 

转载地址:http://jzegn.baihongyu.com/

你可能感兴趣的文章
文章中运用到的数学公式
查看>>
Projective Dynamics: Fusing Constraint Projections for Fast Simulation
查看>>
从2D恢复出3D的数据
查看>>
glm 中 数据类型 与 原始数据(c++ 数组)之间的转换
查看>>
Derivatives of scalars, vector functions and matrices
查看>>
the jacobian matrix and the gradient matrix
查看>>
VS2010 将背景设为保护色
查看>>
ubutun里面用命令行安装软件
查看>>
ubuntu 常用命令
查看>>
SQLite Tutorial 4 : How to export SQLite file into CSV or Excel file
查看>>
how to move pivot to origin
查看>>
Optimizate objective function in matrix
查看>>
Convert polygon faces to triangles or quadrangles
查看>>
How do I divide matrix elements by column sums in MATLAB?
查看>>
read obj in matlab
查看>>
find out the neighbour matrix of a mesh
查看>>
Operators and special characters in matlab
查看>>
As-Conformal-As-Possible Surface Registration
查看>>
qmake Variable Reference
查看>>
ML 14 part2 principal component analysis
查看>>