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:efermi
- Key:first
- Value:enrico
- Key: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
- '''