• Python基础-6-字典


    一:简单的字典示例

    1、在Python中,字典是一系列键值对,每个键都与一个值相关联,可以通过键来访问相关联的值。与键相关联的值可以使数,字符串,列表乃至字典。事实上,可以将任何Python对象用作字典中的值。

    2、在Python中,字典用放在花括号({})中的一系列键值对表示。键和值之间用冒号分隔,而键值对之间用逗号分隔。

    1. alien_0 = {'color':'green', 'points':5}
    2. print(alien_0['color'])
    3. print(alien_0['points'])
    4. # RESULT
    5. '''
    6. green
    7. 5
    8. '''

    二:使用字典

    1、访问字典中的值

    1. alien_0 = {'points':5}
    2. new_points = alien_0['points']
    3. print(f"You jush earned {new_points} points!")
    4. # RESULT
    5. '''
    6. You jush earned 5 points!
    7. '''

    2、创建空字典/添加键值对

    字典是一种动态结构,可随时在其中添加键值对。要添加键值对,可依次指定字典名,用方括号括起的键和相关联的值。

    1. alien_0 = {}
    2. print(alien_0)
    3. alien_0['points'] = 5
    4. alien_0['x_position'] = 0
    5. alien_0['y_position'] = 10
    6. print(alien_0)
    7. # RESULT
    8. '''
    9. {}
    10. {'points': 5, 'x_position': 0, 'y_position': 10}
    11. '''

    3、修改字典中的值

    1. alien_0 = {'color':'green', 'points':5}
    2. print(f"color:{alien_0['color']}")
    3. alien_0['color'] = 'yellow'
    4. print(f"color:{alien_0['color']}")
    5. # RESULT
    6. '''
    7. color:green
    8. color:yellow
    9. '''

    4、删除键值对

    对于字典中不需要的信息,可使用del语句将相应的键值对彻底删除。

    1. alien_0 = {'color':'green', 'points':5}
    2. print(alien_0)
    3. del alien_0['color']
    4. print(alien_0)
    5. # RESULT
    6. '''
    7. {'color': 'green', 'points': 5}
    8. {'points': 5}
    9. '''

    5、使用get()来访问值

    get()的第一个参数用于指定键,必不可少的;第二个参数为指定的键不存在时要返回的值,可选。

    如果指定的键有可能不存在,应考虑使用方法get(),而不要使用方括号表示法,那会显示错误(Traceback

    1. alien_0 = {'color':'green'}
    2. points_value = alien_0.get('points')
    3. print(points_value)
    4. points_value = alien_0.get('points', 'No point value assigned.')
    5. print(points_value)
    6. points_value = alien_0['points']
    7. print(points_value)
    8. # RESULT
    9. '''
    10. None
    11. No point value assigned.
    12. Traceback (most recent call last):
    13. File "/home/zhaotj/work/python-script/list.py", line 9, in
    14. points_value = alien_0['points']
    15. KeyError: 'points'
    16. '''

    三:遍历字典

    字典可用于以各种方式存储信息,因此有多种遍历方式:可遍历字典的所有键值对,也可仅遍历键或值。

    1、遍历所有键值对

    方法items()返回一个键值对列表。使用for循环可依次遍历字典所有键值对。

    1. user = {
    2. 'username' : 'efermi',
    3. 'first' : 'enrico',
    4. 'last' : 'fermi'
    5. }
    6. for key, value in user.items():
    7. print(f"\nKey:{key}")
    8. print(f"Value:{value}")
    9. # RESULT
    10. '''
    11. Key:username
    12. Value:efermi
    13. Key:first
    14. Value:enrico
    15. Key:last
    16. Value:fermi
    17. '''

    2、遍历字典中的所有键

    在不需要使用字典中的值时,可使用方法keys(),同时也可以将其省略效果一样。

    1. user = {
    2. 'username' : 'efermi',
    3. 'first' : 'enrico',
    4. 'last' : 'fermi'
    5. }
    6. for key in user.keys():
    7. print(f"Key1:{key}")
    8. for key in user:
    9. print(f"Key2:{key}")
    10. # RESULT
    11. '''
    12. Key1:username
    13. Key1:first
    14. Key1:last
    15. Key2:username
    16. Key2:first
    17. Key2:last
    18. '''

    方法keys()实际返回的是一个列表,其中包含了字典中的所有键。因此也能检查某个对象是否包含在这个列表中。

    1. favorite_languages = {
    2. 'jen' : 'python',
    3. 'sarah' : 'c',
    4. 'edward' : 'ruby',
    5. 'phil' : 'python'
    6. }
    7. if 'phil' in favorite_languages.keys():
    8. print(f"Hello phil, I see you love {favorite_languages['phil']}")
    9. if 'abc' not in favorite_languages.keys():
    10. print("adc isn't exit")
    11. # RESULT
    12. '''
    13. Hello phil, I see you love python
    14. adc isn't exit
    15. '''

    3、遍历字典中的所有值

    如果只需要字典中的值,可使用方法value()来返回一个值列表,不包含任何键。

    1. favorite_languages = {
    2. 'jen' : 'python',
    3. 'sarah' : 'c',
    4. 'edward' : 'ruby',
    5. 'phil' : 'python'
    6. }
    7. for value in favorite_languages.values():
    8. print(value)
    9. # RESULT
    10. '''
    11. python
    12. c
    13. ruby
    14. python
    15. '''

    这种做法提取字典中的值,而没有考虑是否重复。为了剔除重复项,可使用集合(set)。

    集合中的每个元素都必须是独一无二的,集合和字典都是用一花括号定义。当花括号内没有键值对时,定义的很可能是集合。不同于列表和字典的是集合不会以特定的顺序存储元素。

    1. favorite_languages = {
    2. 'sarah' : 'c',
    3. 'jen' : 'python',
    4. 'edward' : 'ruby',
    5. 'phil' : 'python'
    6. }
    7. for value in set(favorite_languages.values()):
    8. print(value)
    9. # RESULT
    10. '''
    11. ruby
    12. python
    13. c
    14. '''

    四:嵌套

    将一系列字典存储在列表中,或将列表作为值存储在字典中,这称为嵌套。

    1、在列表中存储字典

    创建10个字典new_alien,并增加到空列表aliens中。并通过切片的方式遍历出索引2~4的字典键值对。最后通过函数len()输出列表长度。

    1. aliens = []
    2. for num in range(10):
    3. new_alien = {'num':num, 'color':'green', 'points':'5', 'speed':'slow'}
    4. aliens.append(new_alien)
    5. for alien in aliens[2:5]:
    6. print(alien)
    7. print(f"Total number of aliens:{len(aliens)}")
    8. # RESULT
    9. '''
    10. {'num': 2, 'color': 'green', 'points': '5', 'speed': 'slow'}
    11. {'num': 3, 'color': 'green', 'points': '5', 'speed': 'slow'}
    12. {'num': 4, 'color': 'green', 'points': '5', 'speed': 'slow'}
    13. Total number of aliens:10
    14. '''

    2、在字典中存储列表

    当需要在字典中将一个键关联到多个值时,可以在字典中嵌套一个列表。

    1. favorite_languages = {
    2. 'sarah' : ['c', 'c++'],
    3. 'jen' : ['python', 'shell'],
    4. 'edward' : ['ruby'],
    5. 'phil' : ['python', 'java']
    6. }
    7. for name, languages in favorite_languages.items():
    8. print(f"{name.title()}'s favorite languages are:")
    9. for language in languages:
    10. print(language.title())
    11. # RESULT
    12. '''
    13. Sarah's favorite languages are:
    14. C
    15. C++
    16. Jen's favorite languages are:
    17. Python
    18. Shell
    19. Edward's favorite languages are:
    20. Ruby
    21. Phil's favorite languages are:
    22. Python
    23. Java
    24. '''

    3、在字典中存储字典

    1. user = {
    2. 'zhangsan':{
    3. 'first':'zhang',
    4. 'last':'san',
    5. 'location':'shenzhen'
    6. },
    7. 'lisi':{
    8. 'first':'li',
    9. 'last':'si',
    10. 'location':'guangzhou'
    11. }
    12. }
    13. for username, userinfo in user.items():
    14. print(f"Username:{username}")
    15. full_name = f"{userinfo['first']} {userinfo['last']}"
    16. location = userinfo['location']
    17. print(f"Full name:{full_name.title()}")
    18. print(f"Location:{location.upper()}")
    19. # RESULT
    20. '''
    21. Username:zhangsan
    22. Full name:Zhang San
    23. Location:SHENZHEN
    24. Username:lisi
    25. Full name:Li Si
    26. Location:GUANGZHOU
    27. '''
  • 相关阅读:
    最小生成树(Prim普利姆算法、Kruskal克鲁斯卡尔算法)
    IO流 -- 调研
    mysql日常优化的总结
    网易传媒基于 Arctic 的低成本准实时计算实践
    Java进阶02 Array、内存分析、this、面向对象、继承、override、super、实例化、多态、向下转型、Object
    QTableView/QTableWidget设置单元格字体颜色及背景色
    信息学奥赛一本通:1149:最长单词2
    【工具使用】代码行数统计的方法汇总
    浮点型数字
    jQuery获取更改标签内容、操作标签属性:html()、text()、val()、attr()、prop()
  • 原文地址:https://blog.csdn.net/qq_34968572/article/details/128090014