zoukankan      html  css  js  c++  java
  • 30.字典介绍

    字典介绍

    想一想:

    如果有列表

    nameList = ['xiaoZhang', 'xiaoWang', 'xiaoLi']

    需要对"xiaoWang"这个名字写错了,通过代码修改:

    nameList[1] = 'xiaoxiaoWang'

    如果列表的顺序发生了变化,如下

    nameList = ['xiaoWang', 'xiaoZhang',  'xiaoLi']

    此时就需要修改下标,才能完成名字的修改

    nameList[0] = 'xiaoxiaoWang'

    有没有方法,既能存储多个数据,还能在访问元素的很方便就能够定位到需要的那个元素呢?

    答:

    字典

    另一个场景:

    学生信息列表,每个学生信息包括学号、姓名、年龄等,如何从中找到某个学生的信息?

    >>> studens = [[1001, "王bao强", 24], [1002, "马rong", 23], [1005, "宋x",24], ...]

    循环遍历? No!

    <1>生活中的字典

     

    <2>软件开发中的字典

    变量info为字典类型:

    info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}

    说明:

    • 字典和列表一样,也能够存储多个数据
    • 列表中找某个元素时,是根据下标进行的
    • 字典中找某个元素时,是根据'名字'(就是冒号:前面的那个值,例如上面代码中的'name'、'id'、'sex')
    • 字典的每个元素由2部分组成,键:值。例如 'name':'班长' ,'name'为键,'班长'为值

    <3>根据键访问值

    info = {'name':'班长', 'id':100, 'sex':'f', 'address':'地球亚洲中国北京'}
    
    print(info['name'])
    print(info['address'])

    结果:

    班长
    地球亚洲中国北京

    若访问不存在的键,则会报错:

    >>> info['age']
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    KeyError: 'age'

    在我们不确定字典中是否存在某个键而又想获取其值时,可以使用get方法,还可以设置默认值:

    >>> age = info.get('age')
    >>> age #'age'键不存在,所以age为None
    >>> type(age)
    <type 'NoneType'>
    >>> age = info.get('age', 18) # 若info中不存在'age'这个键,就返回默认值18
    >>> age
    18
    # 列表的缺点
    # 取值的时候 可读性不强
    # 列表是有序的 及其关注他的顺序
    
    # 需求: 保存 名字 年龄 学号
    info_list = ["小明", "007", 20]
    # # 名字
    my_name = info_list[0]
    # # 年龄
    my_age = info_list[1]
    # # 学号
    my_no = info_list[2]

    例子:

    # 字典是一个无序的数据类型
    # 01: 字典的定义
    # 格式: 字典名 = {元素1, 元素2, ...}
    # "name": "小明" -> key: value -> 键值: 实值 -> 元素 -> 键值对 -> keyvalue
    
    my_dict = {"name": "小明", "age": 20, "no": "007"}
    print(my_dict)
    # 获取数值 通过key 获取value
    my_name = my_dict["name"]
    print(my_name)

    运行结果:

    {'no': '007', 'name': '小明', 'age': 20}
    小明

    例子2:

    # 02: 定义一个特殊的字典 空的字典
    my_dict = {}
    # 等价
    # my_dict = dict()
    # <class 'dict'>
    print(type(my_dict))
    print(len(my_dict))

    运行结果:

    <class 'dict'>
    0

    例子3:

    # 03: 字典的key的数据类型选择
    # 可以是任意的数据类型 但是不能key中出现任何可变的数据类型
    l1 = [1, 2]
    l2 = [1, 2]
    my_dict = {l1: "hello", l2: 'world'}
    l2.append(2)
    print(my_dict[l1])

    例子4:

    # 元组
    t1 = (1, 2, 3, [1, 2])
    t2 = (1, 2, 3, [1])
    t2[3].append(2)
    print(t2)
    
    my_dict = {(1, 2, 3, [1, 2]): "hello"}

    例子5:

    # 04: 因为字典是无序的 想取值只能通过key
    # 字典中的key是不允许重复的 每个key都是唯一的
    # 如果程序员写重复了 python只会帮我们保留一份
    my_dict = {"name": "小明", "age": 20, "name": "小红"}
    print(my_dict["name"])

    运行结果:

    小红
  • 相关阅读:
    20180925-5代码规范
    20180925-4 单元测试,结对
    20180925-6 四则运算试题生成
    20180925-3 效能分析
    20170925-2 功能测试
    20180925-7 规格说明书——吉林市两日游
    20180918-1 词频统计
    第二周例行报告
    iOS开发-CocoaPods使用详细说明
    svn的使用详解
  • 原文地址:https://www.cnblogs.com/kangwenju/p/12771240.html
Copyright © 2011-2022 走看看