python入门 之 字典(六)
环境: window7 python 2.7 Visual Code
简介
字典是一种可变的容器模型,由 key:value
键值对构成,键值之间使用:
分割;每对之间用逗号,
分隔。数据用 { }
表示:
_map = {
'score':1,
'name':'Wang',
'language':'China',
'age': 20,
}
字典数据是没有顺序的,因此我们不可以使用列表中的切片。虽然如此,但是我们可以通过任意 key 获取,修改,添加 value。比如:
_map = {
'score':1,
'age': 20,
}
# 获取元素
print(_map['score']) # 1
# 修改元素
_map['score'] = 100
print(_map) # {'age': 20, 'score': 100}
# 添加元素,创建一个新的key即可
_map['new'] = 'new'
print(_map) # {'new': 'new', 'age': 20, 'score': 100}
# 删除元素, 添加指定的key即可
del _map['new']
print(_map) # {'age': 20, 'score': 100}
注意:
# 若key重复出现,则会被覆盖
_map = {
'score':1,
'age': 20,
'score':100
}
print(_map) # {'age': 20, 'score': 100}
遍历
在字典遍历中,python提供了三个方法:keys() , values(), items()
它们分别可获取:键对,值对,键值对
# 为了节省篇幅,结果均未分行显示
_map = {
'score':1,
'age': 20,
'name': 'Python',
}
# 普通遍历, 仅会获取到key
for i in _map:
print(i)
# 通过key获取value
print(_map[i])
print('\n')
# 仅获取key
for key in _map.keys():
print(key) # age score name
print('\n')
# 仅获取value
for value in _map.values():
print(value) # 20 1 Python
print('\n')
# 获取key,value,返回的item是包含key-value的元组
for item in _map.items():
print(item) # ('age', 20) ('score', 1) ('name', 'Python')
查找键值
_map = {
'score':1,
'age': 20,
'name': 'Python',
}
# 使用 in 查找某键是否在字典中
print('age' in _map) # True
print('score' in _map.keys()) # True
print('Score' in _map.keys()) # False
# 使用 in 查找某值是否在字典中
print(1 in _map.values()) # True
print('py' in _map.values()) # False
# 使用get(key, default),它有两个参数: 1. 指定的键 2.若键不存在,则返回默认的default值
print(_map.get('score', 0)) # 1 键值存在,返回value
print(_map.get('SCORE', 100)) # 100 键值不存在,返回default value
setdefault(key, default=None)
与get方法有相似之处,若无对应的key将获取默认值,但是后者会将key放到map中,并将default设置为value。比如:
_map = {
'score':1,
'age': 20,
}
# 字典中没有key,将key-value添加到了字典中
value = _map.setdefault('name', 'python')
print(value) # python 返回的value值
print(_map) # {'age': 20, 'score': 1, 'name': 'python'}
value = _map.setdefault('name', 'lua')
print(value) # python 返回的value值,注意不是lua
print(_map) # {'age': 20, 'score': 1, 'name': 'python'}
示例:使用setdefault
获取指定字符串中每个字符出现的次数:
import pprint
_map = {}
message = 'This is Python, stduy hard'
for char in message:
# 若key不存在,则key放置到map中,且value为0
_map.setdefault(char, 0)
# 记录每个字符的出现次数
_map[char] += 1
pprint.pprint(_map)
'''
{' ': 4,
',': 1,
'P': 1,
'T': 1,
'a': 1,
'd': 2,
'h': 3,
'i': 2,
'n': 1,
'o': 1,
'r': 1,
's': 3,
't': 2,
'u': 1,
'y': 2}
'''
End