zoukankan      html  css  js  c++  java
  • 我的Python入门笔记(9)

    六章、字典


    Special cases aren't special enough to break the rules.——The Zen of Python


      字典和列表类似,也是可变序列,不过与列表不同的是,它是无序的可变列表,宝尊的内容是以“键值对”的形式存在的。Python中的字典相当于Java或者C++中的Map对象.

    一、字典的主要特性:

      1.字典通过键而不是通过索引来读取的

      2.字典有时候也称为关联数组或者散列表(hash)。它是听过键讲一系列的值联系起来,这样就可以通过键从字典中获取指定项,但是不能通过索引来获取。

      3.字典是任意对象的无序集合

      4.字典是无序的,各项是从左到右随机排序的,即保存在字典中的想没有特定的顺序,这样可以提高效率,

      5.字典是可变的,并且可以任意嵌套

      6.字典可以在原处增长或缩短,无需生成一份备份,并且它支持任意深度的嵌套(即它的值可以是列表或者其他字典)

      7.字典中的键必须唯一不允许同一个键出现两次,如果出现两次,则后一个值会被记住。

      8.字典中的键必须不可变,,所以可以使用数字、字符串或者元组,但不能使用列表.

    二、字典的创建和删除、

      定义字典时,每个元素都包含两个部分“键”和“值”,在创建字典时,在“键”和“值”之间使用冒号进行分割,相邻元素使用逗号进行分割。语法格式如下:

      Dictionary={‘key’:’value’,’key2’:’value’,…,’keyn’:’valuen’}

      Dictionary:字典的名称

      Key1:表示元素的键,必须是唯一的,并且不可变,可以是字符串、数字、元组。

      Value1:表示元素的孩子,可以是任意数据类型,不是必须唯一.

    1 dict1={'name':'雨霓同学','Age':'22','Id':'12101184'}
    2 print(type(dict1),dict1)
    3 输出:
    4 <class 'dict'> {'name': '雨霓同学', 'Age': '22', 'Id': '12101184'}

      同列表和元祖以这样,在Python中也可以创建空字典,例如:

      dictionary={}或者:dictionary=dict()

      Python的dict()方法除了可以创建一个空字典外,还可以通过已有的数据快速创建字典,主要表现为以下两种形式:

      1. 通过映射函数创建字典

      dictionary=dict(zip(list1,list2))

      dicrionary:表示字典的名称

      Zip()函数:用于将多个列表或者元祖对应位置的元素合为元祖,并返回包含这些内容的zip对象,如果想得到元祖,可以使用tuple()函数将zip对象转换为元组。如果想得到列表,则可以使用list()函数将其转化为列表. 

    1 list1=['Name','Age','ID']
    2 list2=['雨霓同学','22','12101184']
    3 dict1=dict(zip(list1,list2))
    4 print(dict1)
    5 输出:
    6 {'Name': '雨霓同学', 'Age': '22', 'ID': '12101184'}

      2. 通过给定的“键值对”创建字典

      dictionary=dict(key1=value1,key2=value2,….)

      dictionary表示字典的名称

      Key1,key2:表示元素的键,必须是唯一的,并且不可变,可以是字符串,数字,或者元祖

      Value1,value2:表示元素的值,可以是任何数据类型,不是必须唯一

    1 dict1=dict(name='雨霓同学',Age=22,ID=12101184)
    2 print(dict1)
    3 输出:
    4 {'name': '雨霓同学', 'Age': 22, 'ID': 12101184}

      在Python中,还可以使用dict对象的fromkeys()方法创建值为空的字典,

      dictionary=dict.fromkeys(list1)

      dicrionary:字典名称

      list1:作为字典的键的列表

    1 name_list=['雨霓同学','布谷鸟','1210']  #作为键的列表
    2 dict1=dict.fromkeys(name_list)
    3 print(dict1)
    4 输出:
    5 {'雨霓同学': None, '布谷鸟': None, '1210': None}

      另外,还可以通过已经存在的元组和列表创建字典。

    1 name_tuple=('雨霓同学','布谷鸟','1210') #作为键的元组
    2 sign=['哔哩哔哩','Azure','1184']  # 作为值的列表
    3 dict1={name_tuple:sign}  #创建字典
    4 print(dict1)
    5 输出
    6 {('雨霓同学', '布谷鸟', '1210'): ['哔哩哔哩', 'Azure', '1184']}

      字典中的键必须不可变,,所以可以使用数字、字符串或者元组,但不能使用列表,否则会报错。

      同列表和元组一样,不再需要的字典可以使用del命令删除整个字典,del dictiomary

        此外,如果只是想删除字典的全部元素,可以使用字典对象的clear()方法实现。执行clear()方法后,原字典变为空字典。dictionary.clear()

      此外,还可以使用字典对象中的pop()方法删除并返回指定“键”的元素,以及使用字典对象的popitem()删除并返回字典中的一个元素。

    三、字典的访问与遍历

      1.通过“键值对”访问字典

      在Python中,可以直接使用print()函数直接输出字典内容。也可以根据指定的键得到相应的结果,访问字典的元素可以通过下标的方式实现,与列表和元组不同,这里的下标不是索引号,而是键。

    1 dict1=dict(name='雨霓同学',Age=22,ID=12101184)
    2 print(dict1['name'])
    3 输出:
    4 雨霓同学

      但是在使用这种方法获取指定键的值时,如果指定的键不存在,则会抛出异常.在实际开发中,很可能我们不知道当前存在什么键,所以需要避免该异常的产生,在此,可以使用if语句对不存的情况进行处理,给一个默认值,示例如下:

    1 dict1=dict(name='雨霓同学',Age=22,ID=12101184)
    2 print('这个人的名字:',dict1['name'] if '' in dict1 else '你在访问什么')
    3 输出:
    4 这个人的名字: 你在访问什么

      此外,Python中推荐的方法是使用字典对象的get()方法获得指定键的值,语法格式如下:

      dictionary.get(key,[dafault])

      dictionary:字典对象,即要从中获取值的字典;

      key:指定的键

      default:可选项,用于指定键不存在时,返回一个默认值,如果省略,则返回None 

    dict1=dict(name='雨霓同学',Age=22,ID=12101184)
    print('这个人的名字:',dict1.get('name'))
    print('这个人的名字:',dict1.get('Name','你在干什么'))
    输出:
    这个人的名字: 雨霓同学
    这个人的名字: 你在干什么

      2.字典的遍历

      字典是以“键值对”的形式存储数据的,所以在使用字典时需要获取到这些“键值对”。Python提供了遍历字典的方法,通过遍历可以获得字典中的全部“键值对”,使用字典对象的items()方法可以获得字典的“键值对”列表。语法格式如下:

      dictionary.items()

      dictionary:字典对象,返回值为可遍历的“键值对”元组列表。想要获取到具体的“键值对”可以通过for循环遍历改元组列表。示例如下:

    1 dict1=dict(name='雨霓同学',Age=22,ID=12101184)
    2 for item in dict1.items():
    3     print(item)
    4 输出:
    5 ('name', '雨霓同学')
    6 ('Age', 22)
    7 ('ID', 12101184)

      如果需要获取到具体的每个键和值,可以使用如下方法:

    1 dict1={'雨霓同学':2769433,'Age':220284,'ID':12101184}
    2 for key,value in dict1.items():
    3     print(key,'的编号为',value)
    4 输出:
    5 雨霓同学 的编号为 2769433
    6 Age 的编号为 220284
    7 ID 的编号为 12101184

      在Python中,字典对象还提供了value()key()方法,用于返回字典的值和键列表,使用方法同items()方法,也需要通过for循环遍历该字典列表,获取相应的值和键。

    四、添加、修改和删除字典元素

      由于字典是可变序列,所以可以随时在其中添加“键值对”,这和列表类似。其语法格式如下:

      dictionary[key]=value

      dictionary:表示字典的名称

      key:表示要添加的元素,必须是唯一的,并且不可变,可以是字符串、数字或者元组

      value:表示元素的值,可以是任何数据类型,不是必须唯一。

    1 dict1={'雨霓同学':2769433,'Age':220284,'ID':12101184}
    2 dict1["哔哩哔哩"]='2233'
    3 print(dict1)
    4 输出:
    5 {'雨霓同学': 2769433, 'Age': 220284, 'ID': 12101184, '哔哩哔哩': '2233'}

      在字典中,“键”必须是唯一的,所以新添加元素的“键”与已经存在的“键”重复,那么将使用新的“值”替换原来该“键”的值,这也相当于修改字典的元素.

      当字典的某一个元素不需要时,可以使用del命名将其删除,示例如下:

    1 dict1={'雨霓同学':2769433,'Age':220284,'ID':12101184}
    2 del dict1["雨霓同学"]
    3 print(dict1)
    4 输出:
    5 {'Age': 220284, 'ID': 12101184}

      当删除一个不存在的键时,则会抛出异常.

    五、字典推导式

      使用字典推导式可以快速生成一个字典,它的表现形式和列表推导式相似,示例如下:

    1 import random
    2 randomdict= {i :random.randint(10,100) for i in range(1,5)}
    3 print(randomdict)
    4 输出:
    5 {1: 77, 2: 41, 3: 82, 4: 85}
  • 相关阅读:
    Python学习笔记5
    Python字符串的encode与decode
    python代码`if not x:` 和`if x is not None:`和`if not x is None:`
    关于sys.argv
    Python学习笔记4
    Python学习笔记3
    Python学习笔记2
    生产者消费者_测试
    进程管理
    软件包管理
  • 原文地址:https://www.cnblogs.com/1210x1184/p/11107724.html
Copyright © 2011-2022 走看看