Python3入门笔记及知识点整理笨办法学Python

Python学习-字典(dict)

2018-07-11  本文已影响31人  残阳夕露
查看所有Python相关学习笔记

字典(dict)

字典内元素是无序的

新增(创建)字典(key-value)

key 可以是字符串/整型/浮点型

dict1 = {}
dict1[1] = 3 # 如果这个键已存在,则会修改该键对应的值
dict1[2] = '3'
dict1['2'] = 3
dict1[3.12] = '哈哈'
print(dict1)
# 执行结果
{1: 3, 2: '3', '2': 3, 3.12: '哈哈'}
dict2 = {1:3,2:'3','2':3,3.12:'哈哈'}
print(dict2)
# 执行结果
{1: 3, 2: '3', '2': 3, 3.12: '哈哈'}
dict3 = dict(((1,3),(2,'3'),('2',3),(3.12,'哈哈')))
print(dict3)
# 执行结果
{1: 3, 2: '3', '2': 3, 3.12: '哈哈'}
# 正确方法
dict4 = dict(dd=3,ddsaa=4)
print(dict4)
# 执行结果
{'dd': 3, 'ddsaa': 4}

# 错误方法
dict4 = dict(1=3,2='3','2'=3,3.12='哈哈')
print(dict4)
dict5 = dict('dd'=3,'ddsaa'=4)
print(dict5)
# 执行结果
SyntaxError: keyword can't be an expression

dict1= dict.fromkeys((1,2,3))
print(dict1)
# 执行结果
{1: None, 2: None, 3: None}

dict2 = dict.fromkeys(('ee','dd'),'number')
print(dict2)
# 执行结果
{'ee': 'number', 'dd': 'number'}

dict3 = dict.fromkeys((1,2,3),('number',1,2))
print(dict3)
# 执行结果
{1: ('number', 1, 2), 2: ('number', 1, 2), 3: ('number', 1, 2)}

取值

dict2 =  {'name':'jack','age':40}
print(dict2['age'])
# 执行结果
40

如果查不到则返归指定的值

dict2 =  {'name':'jack','age':40}
print(dict2.get('age',10))
print(dict2.get('age1',10) 
# 执行结果
40
10
  1. 如果字典中存在,则返回对应的值,原字典不变。
dict1= dict.fromkeys((1,2,3),'值') # 新建字典
print(f'原字典:{dict1}')
c = dict1.setdefault(1,6)#key = 1 存在
print(f'set对应的值:{c}')
print(f'set后的字典:{dict1}')
# 执行结果
set对应的值:值
set后的字典:{1: '值', 2: '值', 3: '值', 5: None, 6: 6}
  1. 如果字典中不存在,则新增一个键,对应的值为第二个参数(第二参数如果没有,对应的值就为None)
dict1= dict.fromkeys((1,2,3),'值') # 新建字典
print(f'原字典:{dict1}')
a = dict1.setdefault(5)#key = 5 不存在
print(f'set对应的值:{a}') 
print(f'set后的字典:{dict1}')
b = dict1.setdefault(6,6)#key = 6 不存在
print(f'set对应的值:{b}')
print(f'set后的字典:{dict1}')
# 执行结果
原字典:{1: '值', 2: '值', 3: '值'}
set对应的值:None
set后的字典:{1: '值', 2: '值', 3: '值', 5: None}
set对应的值:6
set后的字典:{1: '值', 2: '值', 3: '值', 5: None, 6: 6}

  1. 应用:如果不存在则新增一个,value是一个list,如果已存在则在列表中加一个元素
dict1 = {}
dict1.setdefault('a',[]).append(1)
dict1.setdefault('cc',[]).append(2)
dict1.setdefault('a',[]).append(3)
print(dict1)
# 执行结果
{'a': [1, 3], 'cc': [2]}

for key in dict #取出key
for key,value in dict.items() #取出key和value
for key in dict.keys() #取出key
for value in dict.values()#取出value
>>> d  = {1:1, 2:0, 3:2}
>>> d
{1: 1, 2: 0, 3: 2}
>>> min(d,key = d.get)
2
>>> max(d,key = d.get)
3

修改数据

from pprint import pprint
d = {1:1,2:2,3:3}
d[1] = 11111 # 如果该键不存在,则新增该键值
pprint(d)
# 执行结果
{1: 11111, 2: 2, 3: 3}
from pprint import pprint
d = {1:1,2:2,3:3}
d.update({4:4,5:5})  # 批量新增
pprint(d)
d.update({2:33})  #批量修改
pprint(d)
# 执行结果
{1: 1, 2: 2, 3: 3, 4: 4, 5: 5}
{1: 1, 2: 33, 3: 3, 4: 4, 5: 5}

复制字典

dict1= dict.fromkeys((1,2,3)) # 新建字典
print(dict1)
print(id(dict1))
dict2 = dict1.copy()  #copy字典
print(dict2)
print(id(dict2))
# 执行结果
{1: None, 2: None, 3: None}
4363826304
{1: None, 2: None, 3: None}
4362426336

dict1= dict.fromkeys((1,2,3)) # 新建字典
print(dict1)
print(id(dict1))
dict3 = dict1  #赋值
print(dict3)
print(id(dict3))
# 执行结果
{1: None, 2: None, 3: None}
4363826376
{1: None, 2: None, 3: None}
4363826376

删除

dict1= dict.fromkeys((1,2,3),'值') # 新建字典
print(f'原字典:{dict1}')
a = dict1.pop(1)
print(f'弹出的值:{a}')
print(f'弹出后的字典:{dict1}')
# 执行结果
原字典:{1: '值', 2: '值', 3: '值'}
弹出的值:值
弹出后的字典:{2: '值', 3: '值'}
dict1= dict.fromkeys((1,2,3),'值') # 新建字典
print(f'原字典:{dict1}')
a = dict1.popitem()
print(f'弹出的值:{a}')
print(f'弹出后的字典:{dict1}')
# 执行结果
原字典:{1: '值', 2: '值', 3: '值'}
弹出的值:(3, '值')
弹出后的字典:{1: '值', 2: '值'}

清空字典

上一篇 下一篇

猜你喜欢

热点阅读