定义

字典存放 key - value(键值对),且value值可以是任意的数据类型

m ={"sheen":[100,99,100],'star':[97,100,100]}
print(m,type(m))

{'sheen': [100, 99, 100], 'star': [97, 100, 100]} <class 'dict'>

集合常用方法fromkeys:
第一个参数可以是列表/元组/字符串/集合,将参数中每一个值作为key值
并且所有value值都相同

#生成8个银行卡号,默认密码为'000000'
cards = []
for i in range(8):
    card = '6217 0042 %.3d' % (i)
    cards.append(card)
print(cards)
print({}.fromkeys(cards, '000000'))

{'6217 0042 000': '000000', '6217 0042 001': '000000', '6217 0042 002': '000000', '6217 0042 003': '000000', '6217 0042 004': '000000', '6217 0042 005': '000000', '6217 0042 006': '000000', '6217 0042 007': '000000'}

特性

字典不支持index索引,切片,重复,连接。
索引必须使用关键字
成员操作符只对关键字可用

m=dict(a=3,b=5,c=7)
print('a' in  m)
print(3 in m)

True
False
  • for遍历

for循环: 默认遍历字典的key值;

d=dict(a=3,b=5,c=7)
for i in d:
    print(i)
for i,v in enumerate(d):
    print(i, '-----', v)
    
a
b
c
0 ----- a
1 ----- b
2 ----- c

图片描述

增加

  • 直接添加
d=dict(a=3,b=5,c=7)
d['m']=0
print(d)

{'a': 3, 'b': 5, 'c': 7, 'm': 0}
  • update()

如果key值存在,则更新value值
如果key值不存在,则添加key-value对

d=dict(a=3,b=5,c=7)
d.update(a=0)
d.update(d=9)
print(d)

{'a': 0, 'b': 5, 'c': 7, 'd': 9}
  • setdefault

如果key值已经存在, 不做修改;
如果key值不存在, 添加key-value值;默认情况下value值为None

d.setdefault('n',4)
d.setdefault('b',100)
print(d)

{'a': 0, 'b': 5, 'c': 7, 'm': 0, 'd': 9, 'n': 4}

图片描述

删除

  • pop()

弹出指定的key-value对

d=dict(a=3,b=5,c=7)
d.pop('a')
print(d)

{'b': 5, 'c': 7}
  • popitem()

随机删除key-value对

d={'b': 5, 'c': 7}
d.popitem()
print(d)
{'b': 5}
  • del

随机删除key-value对

d=dict(a=3,b=5,c=7,m=11,n=12)
del d['b']
print(d)
{'a': 3, 'c': 7, 'm': 11, 'n': 12}
  • clear

清空字典

d={'a': 3, 'c': 7, 'm': 11, 'n': 12}
d.clear()
print(d)

{}

图片描述

查看与修改

services={'http':80,'ssh':22,'ftp':21}

  • 查看字典里面所有的key值
print(services.keys())

dict_keys(['http', 'ssh', 'ftp'])
  • 查看字典里面所有的value值

print(services.values())

dict_values([80, 22, 21])
  • 查看字典里面所有的key-value值
print(services.items())

dict_items([('http', 80), ('ssh', 22), ('ftp', 21)])
  • 遍历
for k,v in services.items(): # k,v = ('http', 80)
    print(k , '--->', v)

for k in services:
    print(k, '--->', services[k])
    
    
http ---> 80
ssh ---> 22
ftp ---> 21
http ---> 80
ssh ---> 22
ftp ---> 21    

查看指定key对应的value值, 注意: key不存在, 就会报错

users={'root':'redhat','studnet':'studnet','sheen':'star'}
print(users['root'])
#print(users['alex'])#报错,KeyError: 'alex'

redhat
  • get方法获取指定key值对应的value值

如果key值存在, 返回对应的value值; 如果key值不存在, 默认返回None, 如果需要指定返回的值, 传值即可;

users={'root':'redhat','studnet':'studnet','sheen':'star'}
print(users.get('studnet'))
print(users.get('alex'))

studnet
None

图片描述

实现switch

针对不同的case,语句执行内容不同

grade = 'C'
d = {
    'A':'优秀',
    'B':'良好',
    'C':'合格'
}
# if grade in d:
#     print(d[grade])
# else:
#     print('error')

print(d.get(grade,'error'))


合格

图片描述


SheenStar
168 声望26 粉丝

祝你坚强