字典
在python中字典是一系列键值对。每个键都与一个值关联,可以使用键来访问值
与键值关联的可以是数,字符串,列表乃至字典,事实上可以把任何python的值拿来作为字典的值
字典的样例
键值对是两个相关联的值,键与值用冒号间隔,键值对之间采用逗号隔开。
对于存储的键值对数量,字典没有限制
alien = {'color' : 'green', 'point' : 5}
使用字典
访问字典中的值
alien = {'color' : 'green', 'point' : 5}
print(alien['color']) # 指定键后python返回对应的值

添加键值对
字典是一种动态结构,可随时往其中添加键值对
# 想要添加字典的值需要,指定字典名,方括号括起键,然后等号右边是值
alien = {'color' : 'green', 'point' : 5}
print(alien)
#添加操作
alien['x_position'] = 1
alien["y_position"] = 5
print(alien)

创建空字典
不指定值,需要的时候添加
alien = {}
修改字典中的值
alien = {'color': 'green', 'point': 5}
print(alien)
#修改字典中的值,指定字典名, 方括号括起键, 等号右边是修改后的值
# !!! 注意键不能写错了,要不然变成添加值了
alien['color'] = 'yellow'
print(alien)

删除键值对
有时候有些键值对已经没用了,可以使用del来删除
这种删除的键值对会在字典中永久消除
alien = {'color': 'green', 'point': 5}
print(alien)
# 删除键值对, del 字典名[键]
del alien['point']
print(alien)

*由类似对象组成的字典
字典一般存储的同一个对象的多种性质,都是也可以选择存储多个对象的同种信息
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++'
}
使用get() 来访问值
使用 字典名[键] 来访问值在有些时候会出错,比如该键不存在时就会出错
get(), 括号内的参数有两个,其中第一个就是指定键, 第二个是该键不存在需要返回的值(第二个是可略的)
alien = {'color': 'green', 'speed': 'low'}
# 如果找到了就返回键对应的值
point_value1 = alien.get('color')
# 如果找不到并且没有指定第二个参数就返回 None
point_value2 = alien.get('point')
# 如果找不到并且指定了第二个参数,就返回该参数
point_value3 = alien.get('point', 'No point value assigned.')
print(point_value1)
print(point_value2)
print(point_value3)

遍历字典
遍历所有键值对
字典名.items() , 返回字典的键值对列表
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++'
}
# 将每个键值对的键和值分别赋予 临时变量 key 和 value
for key, value in favorite_languages.items():
print(f"{key.title()}'s favorite language is {value.title()}")

遍历字典中的所有键
字典名.keys(), keys()方法提取字典中的所有键
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++'
}
names = favorite_languages.keys()
print(names)
for name in favorite_languages.keys():
print(name.title())

注意如果没有keys()的话会默认遍历所有键
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++'
}
names = favorite_languages
print(names)
for name in favorite_languages:
print(name.title())

按特定顺序遍历字典中的所有键
使用临时排序方法sorted()
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++'
}
for name in sorted(favorite_languages.keys()):
print(name.title())

遍历字典中的所有值
字典名.values(),返回一个值列表,
但是这种做法是不考虑值重复的
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++',
'sarah': 'python'
}
for language in favorite_languages.values():
print(language.title())

剔除重复项
当数据量太大,有不需要统计各种状态的个数,可以使用集合set
favorite_languages = {
'jen': 'c',
'david': 'python',
'jane': 'java',
'john': 'c++',
'sarah': 'python'
}
for language in set(favorite_languages.values()):
print(language.title())

嵌套
字典列表
一个字典一般表示一个对象的多种性质,那么要对同种对象的不同个体进行管理就可以使用字典列表
alien1 = {'color': 'green', 'point': 30}
alien2 = {'color': 'green', 'point': 20}
alien3 = {'color': 'yellow', 'point': 20}
aliens = [alien1, alien2, alien3]
for alien in aliens:
print(alien)

当然字典列表也是可以使用列表的一些操作,比如说切片,插入等
aliens = []
for alien_numbers in range(30):
if alien_numbers % 5 == 0 and alien_numbers > 3:
new_alien = {'color': 'red', 'speed': 'quick', 'point': 30}
aliens.append(new_alien)
else:
new_alien = {'color': 'green', 'speed': 'low', 'point': 10}
aliens.append(new_alien)
for alien in aliens[:6]:
print(alien)
print("……")

在字典中存储列表
pizza = {
'crush': 'trick',
'topping': ['mushroom', 'extra cheese']
}
print(pizza)

在字典中存储字典
这种做法可以使代码变得复杂
users = {
'aein': {
'first': 'albert',
'last': 'einstein',
'location': 'China'
},
'muc':{
'first': 'marie',
'last': 'curie',
'location': 'paris'
}
}
若每个元素的字典包含不同的键,那么for处理起来就会比较复杂
浙公网安备 33010602011771号