1、在Python中,字典是一系列键值对,每个键都与一个值相关联,可以通过键来访问相关联的值。与键相关联的值可以使数,字符串,列表乃至字典。事实上,可以将任何Python对象用作字典中的值。
2、在Python中,字典用放在花括号({})中的一系列键值对表示。键和值之间用冒号分隔,而键值对之间用逗号分隔。
alien_0 = {'color':'green', 'points':5}
print(alien_0['color'])
print(alien_0['points'])# RESULT
'''
green
5
'''
1、访问字典中的值
alien_0 = {'points':5}new_points = alien_0['points']
print(f"You jush earned {new_points} points!")# RESULT
'''
You jush earned 5 points!
'''
2、创建空字典/添加键值对
字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名,用方括号括起的键和相关联的值。
alien_0 = {}
print(alien_0)
alien_0['points'] = 5
alien_0['x_position'] = 0
alien_0['y_position'] = 10
print(alien_0)# RESULT
'''
{}
{'points': 5, 'x_position': 0, 'y_position': 10}
'''
3、修改字典中的值
alien_0 = {'color':'green', 'points':5}
print(f"color:{alien_0['color']}")
alien_0['color'] = 'yellow'
print(f"color:{alien_0['color']}")# RESULT
'''
color:green
color:yellow
'''
4、删除键值对
对于字典中不需要的信息,可使用del语句将相应的键值对彻底删除。
alien_0 = {'color':'green', 'points':5}
print(alien_0)
del alien_0['color']
print(alien_0)# RESULT
'''
{'color': 'green', 'points': 5}
{'points': 5}
'''
5、使用get()来访问值
get()的第一个参数用于指定键,必不可少的;第二个参数为指定的键不存在时要返回的值,可选。
如果指定的键有可能不存在,应考虑使用方法get(),而不要使用方括号表示法,那会显示错误(Traceback)
alien_0 = {'color':'green'}
points_value = alien_0.get('points')
print(points_value)
points_value = alien_0.get('points', 'No point value assigned.')
print(points_value)points_value = alien_0['points']
print(points_value)
# RESULT
'''
None
No point value assigned.
Traceback (most recent call last):File "/home/zhaotj/work/python-script/list.py", line 9, in points_value = alien_0['points']
KeyError: 'points'
'''
字典可用于以各种方式存储信息,因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。
1、遍历所有键值对
方法items()返回一个键值对列表。使用for循环可依次遍历字典所有键值对。
user = {'username' : 'efermi','first' : 'enrico','last' : 'fermi'
}for key, value in user.items():print(f"\nKey:{key}")print(f"Value:{value}")
# RESULT
'''
Key:username
Value:efermiKey:first
Value:enricoKey:last
Value:fermi
'''
2、遍历字典中的所有键
在不需要使用字典中的值时,可使用方法keys(),同时也可以将其省略效果一样。
user = {'username' : 'efermi','first' : 'enrico','last' : 'fermi'
}for key in user.keys():print(f"Key1:{key}")for key in user:print(f"Key2:{key}")
# RESULT
'''
Key1:username
Key1:first
Key1:last
Key2:username
Key2:first
Key2:last
'''
方法keys()实际返回的是一个列表,其中包含了字典中的所有键。因此也能检查某个对象是否包含在这个列表中。
favorite_languages = {'jen' : 'python','sarah' : 'c','edward' : 'ruby','phil' : 'python'
}if 'phil' in favorite_languages.keys():print(f"Hello phil, I see you love {favorite_languages['phil']}")if 'abc' not in favorite_languages.keys():print("adc isn't exit")# RESULT
'''
Hello phil, I see you love python
adc isn't exit
'''
3、遍历字典中的所有值
如果只需要字典中的值,可使用方法value()来返回一个值列表,不包含任何键。
favorite_languages = {'jen' : 'python','sarah' : 'c','edward' : 'ruby','phil' : 'python'
}for value in favorite_languages.values():print(value)# RESULT
'''
python
c
ruby
python
'''
这种做法提取字典中的值,而没有考虑是否重复。为了剔除重复项,可使用集合(set)。
集合中的每个元素都必须是独一无二的,集合和字典都是用一花括号定义。当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典的是集合不会以特定的顺序存储元素。
favorite_languages = {'sarah' : 'c','jen' : 'python','edward' : 'ruby','phil' : 'python'
}for value in set(favorite_languages.values()):print(value)# RESULT
'''
ruby
python
c
'''
将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。
1、在列表中存储字典
创建10个字典new_alien,并增加到空列表aliens中。并通过切片的方式遍历出索引2~4的字典键值对。最后通过函数len()输出列表长度。
aliens = []
for num in range(10):new_alien = {'num':num, 'color':'green', 'points':'5', 'speed':'slow'}aliens.append(new_alien)for alien in aliens[2:5]:print(alien)print(f"Total number of aliens:{len(aliens)}")# RESULT
'''
{'num': 2, 'color': 'green', 'points': '5', 'speed': 'slow'}
{'num': 3, 'color': 'green', 'points': '5', 'speed': 'slow'}
{'num': 4, 'color': 'green', 'points': '5', 'speed': 'slow'}
Total number of aliens:10
'''
2、在字典中存储列表
当需要在字典中将一个键关联到多个值时,可以在字典中嵌套一个列表。
favorite_languages = {'sarah' : ['c', 'c++'],'jen' : ['python', 'shell'],'edward' : ['ruby'],'phil' : ['python', 'java']
}for name, languages in favorite_languages.items():print(f"{name.title()}'s favorite languages are:")for language in languages:print(language.title())# RESULT
'''
Sarah's favorite languages are:
C
C++
Jen's favorite languages are:
Python
Shell
Edward's favorite languages are:
Ruby
Phil's favorite languages are:
Python
Java
'''
3、在字典中存储字典
user = {'zhangsan':{'first':'zhang','last':'san','location':'shenzhen'},'lisi':{'first':'li','last':'si','location':'guangzhou'}
}for username, userinfo in user.items():print(f"Username:{username}")full_name = f"{userinfo['first']} {userinfo['last']}"location = userinfo['location']print(f"Full name:{full_name.title()}")print(f"Location:{location.upper()}")# RESULT
'''
Username:zhangsan
Full name:Zhang San
Location:SHENZHEN
Username:lisi
Full name:Li Si
Location:GUANGZHOU
'''