字典:dic = {'name':'alex'}
1,增
dic['k'] = 'v'
有键值对,则覆盖
setdefault 有键值对,不添加
dic.setdefault('k1','v1') 可以
dic.setdefault('name','barry')
2,删
pop dic.pop('name') 有返回值,返回得是对应的值
dic.pop('k2',None)
dic.popitem()随机删除
del dic['name']
del dic
clear 清空
3,改
dic['name'] = 'v'
dic = {'name':'alex'}
dic2 = {'name':'barry','age':18}
dic.update(dic2)
print(dic) {'name':'barry','age':18}
print(dic2) {'name':'barry','age':18}
a,b = [1,2]
print(a,b) # 1,2
a = 1
b = 2
a,b=b,a
4,查
print(dic.keys())
print(dic.values())
print(dic.items()) # for k,v in dic.items():
#以上三个 都可以for循环
dic['name']
dic.get('name')
字典的方法:
序号 | 方法 | 解释 |
1 | clear() | 清空 |
2 |
get() |
通过 get 获取,设置默认值,如果键名不存在,返回设置的默认值 |
3 |
pop() |
键值对删除,有返回,没有原来的键会报错(自行设置返回键就不会报错) |
4 |
update() |
修改 |
5 |
copy()
|
返回一个字典的浅复制 |
6 | items() | 以列表返回可遍历的(键, 值) 元组数组 |
7 | popitem() | 随机删键值对 |
8 |
values()
|
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
|
9 |
fromkeys()
|
创建一个新字典,以序列seq中元素做字典的键,val为字典所有键对应的初始值
|
10 |
keys()
|
以列表返回一个字典所有的键
|
11 |
setdefault()
|
和get()类似, 但如果键不存在于字典中,将会添加键并将值设为default
|
Python 中的字典查询主要有两种方法,一种是用 [ ] 直接通过键名查询,另一种方法是通过 .get() 来获取键名。 # 查询 # Issue 1, 直接通过键名获取 print("Issue 1 : ", member["Lilei"]) # Issue 2, 通过 get 获取 print("Issue 2 : ", member.get("Lilei")) # Issue 3, 如果通过 get 获取的键名不存在,返回默认值 print("Issue 3 : ", member.get("Mike")) # Issue 4, 可以通过 get 获取,设置默认值,如果键名不存在,返回设置的默认值 print("Issue 4 : ", member.get("Mike", 18)) >>>>> 以下为程序输出结果 >>>>> Issue 1 : 16 Issue 2 : 16 Issue 3 : None Issue 4 : 18
赋值
Python 字典赋值与 Python 字典查询类似,可以用 [ ] 来为指定的键赋值,如果被指定的键不存在,Python 会为你创建一个新的键值对。 # 赋值 # Issue 1, 直接通过方括号赋值 member["Lilei"] = 18 print("Issue 1 : ", member["Lilei"]) # Issue 2,通过方括号为不存在的键名创建新值 member["Tony"] = 20 print("Issue 2 : ", member["Tony"]) >>>>> 以下为程序输出结果 >>>>> Issue 1 : 18 Issue 2 : 20
查
在实际应用中,我们可能会尝试获取一个不存在的键名,这是,Python 会报出 KeyError 的错误,我们可以通过 try - except
捕获异常来处理,此外,我们也可以通过 in 来判断键名是否存在。 # 查找 # Issue 1 如果键名不存在与字典,会返回 KeyError 错误 try: mike_member = member["Mike"] except KeyError: print("Issue 1 : Can not found member named: Mike") # Issue 2 可以用 in 查找键是否存在 print("Issue 2 : Mike in member: ", "Mike" in member) print("Issue 2: Lilei in member: ", "Lilei" in member) >>>>> 以下为程序输出结果 >>>>> Issue 1 : Can not found member named: Mike Issue 2 : Mike in member: False Issue 2: Lilei in member: True
字典的表示方法: info_dic={'name':'xxxx','age':18,'sex':'female'} # 常用操作: # 1.存/取 info_dic={'name':'egon','age':18,'sex':'male'} print(info_dic['name11111111'])#找不到则报错了 print(info_dic.get('name',None)) print(info_dic.get('name222222',None))#get方法找不到不报错,可以自己设定默认值 #pop:key存在则弹出值,不存在则返回默认值,如果没有默认值则报错 # print(info_dic.pop('nam123123123123123123e',None)) # print(info_dic) # print(info_dic.popitem()) # print(info_dic) # info_dic['level']=10 # print(info_dic) # # 删除 info_dic={'name':'egon','age':18,'sex':'male'} # info_dic.pop() # info_dic.popitem() # del info_dic['name'] # # 键s,值s,键值对 info_dic={'name':'egon','age':18,'sex':'male'} # print(info_dic.keys()) # print(info_dic.values()) # print(info_dic.items()) # for k in info_dic: # # print(k,info_dic[k]) # print(k) # print('========>') # for k in info_dic.keys(): # print(k) # for val in info_dic.values(): # print(val) # for k,v in info_dic.items(): #k,v=('name', 'egon') # print(k,v) # 长度 # info_dic={'name':'egon','age':18,'sex':'male'} # print(len(info_dic)) # # 循环 # # 包含in # info_dic={'name':'egon','age':18,'sex':'male'} # print('name' in info_dic) # print('name' in info_dic.keys()) # print('egon' in info_dic.values()) # print(('name','egon') in info_dic.items()) #掌握 info_dic={'name':'egon','age':18,'sex':'male'} # info_dic.update({'a':1,'name':'Egon'}) # print(info_dic) # info_dic['hobbies']=[] # info_dic['hobbies'].append('study') # info_dic['hobbies'].append('read') # print(info_dic) #setdefault:key不存在则设置默认值,并且放回值默认值 #key存在则不设置默认,并且返回已经有的值 # info_dic.setdefault('hobbies',[1,2]) # print(info_dic) # info_dic.setdefault('hobbies',[1,2,3,4,5]) # print(info_dic) # info_dic={'name':'haiyan','age':18,'sex':'male'} # {'name':'egon','age':18,'sex':'male','hobbies':['study']} # info_dic.setdefault('hobbies',[]).append('study') # {'name':'egon','age':18,'sex':'male','hobbies':['study','read']} # info_dic.setdefault('hobbies',[]).append('read') # {'name':'egon','age':18,'sex':'male','hobbies':['study','read','sleep']} # info_dic.setdefault('hobbies',[]).append('sleep') # l=info_dic.setdefault('hobbies',[]) # print(l,id(l)) # print(id(info_dic['hobbies'])) # print(info_dic) #了解 # d=info_dic.copy() # print(d) # info_dic.clear() # print(info_dic) # d=info_dic.fromkeys(('name','age','sex'),None) # print(d) # d1=dict.fromkeys(('name','age','sex'),None) # d2=dict.fromkeys(('name','age','sex'),('egon',18,'male')) # print(d1) # print(d2) # info=dict(name='haiyan',age=18,sex='male') # print(info) # # info=dict([('name','haiyan'),('age',18)]) # print(info)
一、字典
1、无序(不能索引)
2、数据关联性强
3、键值对。唯一一个映射数据类型。
#字典的键必须是可哈希的
【可哈希即不可变(不可变的数据类型:字符串,数字,布尔值,元祖)并且是唯一的】
【不可哈希的即可变(可变数据类型:列表,字典,set)】
二、增 #1、
1、
dic = {'name':'lishi','age':21,'hobby':'sleep'} dic['weight']=60 print(dic)
输出:
{'name': 'lishi', 'age': 21, 'hobby': 'sleep', 'weight': 60
2、setdefault 有键值对不做任何改变,没有键值对才添加
dic.setdefault('k') print(dic) # {'name': 'lishi', 'age': 21, 'hobby': 'sleep', 'k': None} dic.setdefault('name','shi') print(dic) # {'name': 'lishi', 'age': 21, 'hobby': 'sleep'}
删 # pop:按键删,有返回,没有原来的键会报错 popitem:随机删键值对
clear:清空 dic:删除的键如果没有则报错
1、pop:键值对删,有返回,没有原来的键会报错(自行设置返回键就不会报错)
dic = {'name':'lishi','age':21,'hobby':'sleep'} print(dic.pop('height')) # 报错 print(dic.pop('weight',None)) # None print(dic.pop('weight','没有不报错')) # 没有不报错
2、popitem:随机删键值对
dic.popitem() print(dic)
3、clear:清空
dic.clear() print(dic) # {}
4、del:删除的键如果没有则报错
del dic['name'] print(dic) # {'age': 21, 'hobby': 'sleep'}
三、改 update
dic = {'name':'lishi','age':21,'hobby':'sleep'} dic['name'] = 'jassin' print(dic)
update dic.update(dic1)##将dic1添加并覆盖到dic
dic.update(dic1)##将dic1添加并覆盖到dic
dic = {'name':'lishi','age':21,'hobby':'sleep'}
dic1 = {'name':'jassin','age':21,'hobby':'sleep','job':'student'}
dic.update(dic1)
print(dic) # {'name': 'jassin', 'age': 21, 'hobby': 'sleep', 'job': 'student'}
print(dic1) #{'name': 'jassin', 'age': 21, 'hobby': 'sleep', 'job': 'student'}
四、查 用get时。不会报错# 没有可以返回设定的返回值
dic = {'name':'lishi','age':21,'hobby':'sleep'} print(dic['name']) print(dic['dadada']) # 报错 print(dic.get('name')) # lishi print(dic.get('dadadd')) # None(没有这个键返回None默认) print(dic.get('dadadad','没有这个键')) # 没有这个键
五、
#将键以列表形式输出
dic = {'name':'lishi','age':21,'hobby':'sleep'} print(dic.keys()) # dict_keys(['name', 'age', 'hobby'])
#打印出列表
for key in dic.keys():
print(key)
输出:键
name
age
hobby
for value in dic.values():
print(value)
输出:值
for i in dic:
print(i)
输出:
同上
for key,value in dic.items():
print(key,value)
输出:
name lishi
age 21
hobby sleep
将alex 首字母大写
dic1={'name':['alex',2,3,5],'job':'teacher'} dic1['name'][0]=dic1['name'][0].capitalize() print(dic1) 输出: {'name': ['Alex', 2, 3, 5], 'job': 'teacher'}