字典

在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处理起来就会比较复杂

posted @ 2022-03-25 15:49  我就一水  阅读(76)  评论(0)    收藏  举报