字典简介

字典

在本节中,你将学习存储字典的列表、存储列表的字典和存储字典的字典

6.1  一个简单的字典

alien_0 = {'alien': 'green', 'points': 5}
print(alien_0['alien'])
print(alien_0['points'])
print(alien_0)
========
output:
green
5
{'alien': 'green', 'points': 5}

6.2 使用字典

在python中,字典是一系列键-值对,每个键都与一个值相关联,使用键来访问与之相关联的值,

与键相关联的值可以是数字,字符串, 列表乃至字典,

6.3 添加键-值对

字典是一种动态结构,可随时在其中添加键-值对,

可依次指定字典名,用方括号括起的键和相关联的值

eg:

alien_0 = {'alien': 'green', 'points': 5}
print(alien_0)
alien_0['x_position'] = 0
alien_0['y_position'] = 25
print(alien_0)
==============
output:
{'alien': 'green', 'points': 5}
{'alien': 'green', 'points': 5, 'x_position': 0, 'y_position': 25}

注意:键-值对的排列顺序与添加顺序不同,python不关心键-值对的添加顺序,

只关心键和值之间的关联关系

 

6.4 创建一个空字典

eg:

alien_0 = {}

alien_0['color'] = 'green'

alien_0['points'] = 5

print(alien_0)

=============

output:

{'color': 'green', 'point': 5}

使用字典来存储用户提供的数据或在编写能自动生成大量键-值对的代码时,
通常都需要先定义一个空字典

6.5 修改字典的值
eg:
alien_0 = {}

alien_0['color'] = 'green'
alien_0['point'] = 5
print(alien_0)
alien_0['point'] = 9
print(alien_0)

=========================
output:
{'color': 'green', 'point': 5}
{'color': 'green', 'point': 9}

=========================

6.5 删除键-值对

使用del语句,指定字典名和要删除的键

eg:

alien = {'color': 'green', 'point': 5}

del alien['point']
print(alien)

==============
output:
{'color': 'green'}

6.6 遍历字典
遍历字典的方式:遍历字典的键-值对,键或值

遍历所有的键-值对
eg:
user_0 = {
    'username': 'efermi',
    'first': 'enric',
    'last': 'fermi'
    }

for key, value in user_0.items():
    print("\nKey:" + key)
    print("\nValue:" + value)
==========
output:

Key:username

Value:efermi

Key:first

Value:enric

Key:last

Value:fermi

===================

注意:键-值对的返回顺序与存储顺序不同,

python不关心键-值对的存储顺序,而只跟踪键和值之间的关联

6.7 遍历字典中的所有键

方法keys()

eg:

user_0 = {
    'username': 'efermi',
    'first': 'enric',
    'last': 'fermi'
    }

for key in user_0.keys():
    print(key.title())

==================
output:
Username
First
Last

================

遍历字典时,会默认遍历所有的键

so, for key in user_0: 输出不会改变

方法keys() 并非只能用于遍历,它返回一个列表,其中包含字典中的所有键

6.8 按顺序遍历字典中的所有键

要以特定的顺序返回元素,可以使用函数sorted()来获得特定顺序排列的键列表的副本

eg:

user_0 = {
    'username': 'efermi',
    'first': 'enric',
    'last': 'fermi'
    }

for key in sorted(user_0.keys()):
    print(key.title())
=================
output:
First
Last
Username

=================

6.9 遍历字典中的所有值

使用方法values() 返回值列表,而不包含任何键

user_0 = {
    'username': 'efermi',
    'first': 'enric',
    'last': 'fermi'
    }

for value in sorted(user_0.values()):
    print(value.title())

====================
output:
Efermi
Enric
Fermi

==============

这种做法提取字典中所有的值,而没有考虑是否重复,
最终的列表可能包含大量的重复项,为了剔除重复项,

可使用集合(set),集合类似于列表,但是元素都是唯一的

eg:

languages = {
'jen': 'python',
'sarah': 'c',
'edward': 'ruby',
'phil': 'python',
}
print("*************")
for language in set(languages.values()):
print(language.title())
----------------------------------------
output:
Ruby
C
Python

随着更深入的学习,会有更多的内置功能

嵌套
有时候,需要将字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套
甚至可以字典中嵌套字典

6.10 字典列表
eg:
alien_0 = {'color': 'green', 'points': 5}
alien_1 = {'color': 'red', 'points': 9}
alien_2 = {'color': 'black', 'points': 10}

aliens = [alien_0, alien_1, alien_2]

for alien in aliens:
print(alien)
------------------------
output:
{'color': 'green', 'points': 5}
{'color': 'red', 'points': 9}
{'color': 'black', 'points': 10}
这个案例将字典都放在列表中,最后遍历

更符合现实的情况是字典不止有三个
我们使用range()创建30个字典
eg:
aliens = []

for alien_number in range(30):
new_alien = {'color': 'green', 'points': 5, 'speed': 'slow'}
aliens.append(new_alien)

#display aliens of 5
for alien in aliens[:5]:
print(alien)
print("......")

#display create how many alien
print("Total number of aliens: " + str(len(aliens)))


------------------------
output:
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}
{'color': 'green', 'points': 5, 'speed': 'slow'}

如果要修改某一段的数据只需要修改相关的切片即可

6.11 在字典中存储列表
将列表存储在字典中
eg:
pizza = {
'crust': 'thick',
'toppings':['mushrooms', 'extra cheese'],
}

for topping in pizza['toppings']:
print("\t" + topping)

--------------------------------------
output:
    mushrooms
    extra cheese
---------------------------------------
6.11 在字典中存储字典
可在字典中嵌套字典,eg:如果有多个网站用户,每个都有独特的用户名
可在字典中将用户名作为键,然后将每位用户的信息存储在一个字典中,
并将该字典作为与用户名相关联的值,
eg:
users = {
'aeinstein': {
'first': 'albert',
'last': 'einstein',
'location': 'princeton',
},
'mcurie': {
'first': 'marie',
'last': 'curie',
'location': 'paris',
},
}


for user_name, user_info in users.items():
print(user_name)
print("full_time " + user_info['first'] + user_info['last'])
print(user_info['location'])
----------------------------------------------
output:
aeinstein
full_time alberteinstein
princeton
mcurie
full_time mariecurie
paris
---------------------------------------------------
attention: 每位用户的字典结构都相同,这样嵌套的字典处理方便

总结:
本节学习:如何定义字典,以及如何使用存储在字典中的信息,
     访问和修改字典中的元素,遍历字典中的所有信息,
     遍历字典中所有的键-值对,所有的键和值
     如何在列表中嵌套字典,在字典中嵌套列表以及字典中嵌套字典










posted @ 2019-05-10 07:55  电院院长  阅读(328)  评论(0编辑  收藏  举报