Day6-元组和字典

Day6-元组和字典

01-元组

  1. 什么是元组(tuple)

    元组就是不可变的列表

    元组是容器型数据类型,将()作为容器的标志,里面多个元素用逗号隔开:(元素1,元素2,元素3,…)

    元组不可变(不支持元素的增删改);元组是有序的(支持下标操作)

    元素:任何类型的数据,并且可以重复

    t1 = (10, 23, 90, 10)
    print(type(t1), t1)
    
    # 空元组
    t2 = ()
    
  2. 只有一个元素的元组(元素,)

    如果一个元组中有一个元素,那么唯一的元素后面后面必须加逗号

    list1 = [23]
    print(list1, type(list1))
    
    t3 = (23)  # <class 'int'>
    print(t3, type(t3))
    
    t4 = (23,)  # <class 'tuple'>
    print(t4, type(t4))
    
    
  3. 省略括号

    在没有歧义的情况下,可以省略元组的(),直接将元素用多个逗号隔开来表示一个元组

    t5 = 'abc', 10, 100, True
    print(t5, type(t5))
    
    t6 = 10, 20, 30 * 2
    t7 = (10, 20, 30) * 2
    print(t6, type(t6), t7, type(t7))
    
  4. 获取元素

    • 列表获取元素的方法元组都支持

    • 让变量的个数和元组中元素的个数保持一致来获取元组所有元素的值

      # 变量1, 变量2, 变量3,... = 元组
      t8 = (10, 11, 12)
      x, y, z = t8
      print(x, y, z)
      
    • 同时用多个变量获取元组中元素的时候,变量的个数可以比元组中的元素的个数少,但是必须有且只有一变量前有*

      stu = ('小明', '男', 30, 89, 70, 170)
      m1, m2, *m3 = stu
      print(m1, m2, m3)
      name, sex, *massage, height = stu
      print(name, sex, massage, height)
      
  5. 元组相关操作

    列表相关操作元组操作

02-字典

  1. # 定义一个变量保存一个学生的信息:姓名、性别、年龄、身高、体重、成绩
    stu1 = ['小明', 'man', 30, 177, 80, 78]
    
    stu = {'name': '小明', 'sex': '男', 'age': 30, '身高': '177', 'weight': '80'}
    print(stu['name'])
    

    什么时候使用字典
    同时保存多个意义不同的数据就使用字典

  2. 什么是字典(dict)
    字典是容器型数据类型,将{}作为容器的标志, 里面多个元素用逗号隔开(元素必须是键值对)
    {键1:值1,键2:值2,…}
    字典是可变的(支持增删改);字典是无序的(不支持下标操作)
    元素:必须是键值对;
    键 - 必须是不可变的数据(数字、字符串、元组),一般使用字符串;键是用来对值进行描述和区分的
    唯一的
    值 - 没有要求

   # 空字典
   d1 = {}
   print(type(d1))  # <class 'dict'>
   
   # 键是不可变的
   d2 = {'name': '小米', 10: 100, (1, 2): 200}
   print(d2)   # {'name': '小米', 10: 100, (1, 2): 200}
   
   # 报错!列表不能作为键
   
   # d3 = {'name': '小米', 10: 100, [1, 2]: 200}   # TypeError: unhashable type: 'list'
   
  1. 键是唯一

    d3 = {'name': 'Bob', 'age': 18, 'name': 'Tom'}  # {'name': 'Tom', 'age': 18}
    print(d3)
    
  2. 字典无序

    print({'a': 10, 'b': 20} == {'b': 20, 'a': 10})     # True
    
  3. 字典的增删改查

    • 查 - 获取值

      • 获取单个值:a.字典[key] - 获取指定key对应的值
        b.
        字典.get(key) - 获取指定key对应的值(如果key不存在不会报错,返回None)
        字典.get(key, value(默认值)) - 获取指定key对应的值(如果key不存在不会报错,返回默认值)

        dog = {'name': '旺财', 'age': '3', 'sex': '母狗', 'breed': '二哈'}
        print(dog['sex'], dog['name'])
        print(dog.get('age'))
        print(dog.get('breed', '公'))
        
        # print(dog['weight'])    # KeyError: 'weight'
        print(dog.get('weight'))    # None
        print(dog.get('weight', 0))  # 0
        
      • 遍历

        """
        for 变量 in 字典:
            pass
            
        注意:变量依次取到的是字典的key
        """
        # 键值对离开了字典无效
        dog = {'name': '旺财', 'age': '3', 'sex': '母狗', 'breed': '二哈'}
        for x in dog:
            print('x:', x, dog[x])
        
    • 增、改

      """
      字典[key] = 值     -   当key存在就是修改指定key对应的值,当key不存在就是添加键值对
      """
      dog['name'] = '大黄'
      dog['age'] = 2
      dog['weight'] = 30
      
      print(dog)
      
    • # del 字典[key]   -   删除指定key对应的键值对
      # 字典.pop(key)   -   取出指定key对应的值
      
      del dog['sex']
      print(dog)
      
      del_name = dog.pop('name')
      print(dog, del_name)
      

03-字典的实际应用

# 练习:定义一个变量保存一个班级的信息,班级信息主要包含:班级名称、位置、容量、班主任、讲师、所有学生
# 班主任:姓名、性别、年龄、电话、QQ
# 讲师:姓名、性别、年龄、电话、QQ、级别
# 所有学生:多个学生,每个学生包含:姓名、性别、年龄、学历、专业、电话


class2004 = {'class_name': 'python_2004',
             'location': '成都',
             'capacity': 60,
             'class_teacher': {
                 'name': '张老师',
                 'gender': '女',
                 'age': 10,
                 'tel': '110',
                 'qq': '787239'
             },

             'lecturer': {
                 'name': '骆老师',
                 'gender': '男',
                 'age': 40,
                 'tel': '120',
                 'qq': '782120239',
                 'rank': '高级'
             },
             'student': [
                 {'name': '小明', 'gender': '男', 'age': 19},
                 {'name': '小花', 'gender': '女', 'age': 18},
                 {'name': '张三', 'gender': '男', 'age': 23},
                 {'name': 'Tom', 'gender': '男', 'age': 22},
                 {'name': 'Bob', 'gender': '男', 'age': 30}
             ]
}
print(class2004['class_teacher']['name'])
print(class2004['lecturer']['name'], class2004['lecturer']['rank'])
print(class2004['student'])
ages = 0
stu = class2004['student']
for x in stu:
    ages += x['age']
print(ages/(len(stu)))

04-字典的相关操作

  1. 字典不支持加法、乘法运算,也不支持比较大小

    in 和 not in

    key in 字典 - 判断字典中是否存在指定的键

    d1 = {'a': 10, 'b': 20, 'c': 30}
    print(10 in d1)     # False
    print('a' in d1)    # True
    
  2. 相关函数:len、dict

    1. 获取长度

      print(len(d1))
      
    2. 字典的类型转换

      """
      dict(数据)  -   将指定数据转换成字典,数据的要求:
                      a.数据本身是序列
                      b.序列中的每个元素必须是长度为2的小序列
                      c.小序列中的第一个元素是不可变的数据
      
      list(字典)    -   将指定字典转换成列表(将字典的key作为列表的元素)
                      
      """
      
      date = ['ab', (10, 20), ['abc', 123]]
      
      print(dict(date))
      print(list(d1))
      
    3. 字典的相关方法

      • 字典.clear() - 清空字典
      d1.clear()
      print(d1)
      
      • 字典.copy() - 复制字典产生一个一模一样的新字典
      d1 = {'a': 10, 'b': 20, 'c': 30}
      d2 = d1
      d3 = d1.copy()
      print(d2)
      d1['c'] = 300
      print(d2)
      
      • # dict.fromkeys(序列) -  创建一个新的字典,键是序列中的每一个元素,值都是None
        # dict.fromkeys(序列, 值)  -   创建一个新的字典,键是序列中的每一个元素,值是指定的值
        print(dict.fromkeys('abc', 1))
        
      • keys、values、items

        """
        字典.key()    -   获取字典所有的key(返回值是序列但是不是列表)
        字典.values()   -   获取字典所有的值(返回值是序列但是不是列表)
        字典.items()    -   同时获取每个键值对的键和值(返回值是序列,序列中的元素是元组)
        """
        d1 = {'a': 10, 'b': 20, 'c': 30}
        print(d1.keys())    # dict_keys(['a', 'b', 'c'])
        print(d1.values())      # dict_values([10, 20, 30])
        print(d1.items())       # dict_items([('a', 10), ('b', 20), ('c', 30)])
        print(list(d1.keys()))
        
        • 字典.setdefault(键,值) - 在字典中添加键值对(只添加不修改)

          d1.setdefault('name', 234)
          print(d1)
          
        • 字典1.update(字典2) - 将字典2中所有的键值对都添加到字典1中

          注意:字典2不一定是字典,也可以是能转换成字典的序列

            d1 = {'a': 10, 'b': 20, 'c': 30}
          d1.update({'name': '张三'})
          d1.update(('nm', [2, 3]))
          print(d1)
          

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
我能为您提供Python语言的实现代码,但是我无法上传文件或代码片段,请您理解。 以下是代码实现: 1. 列表 ```python def day_of_year_list(date): days_month = [31,28,31,30,31,30,31,31,30,31,30,31] year, month, day = date.split('-') year, month, day = int(year), int(month), int(day) if (year%4==0 and year%100!=0) or year%400==0: days_month[1] = 29 days_count = sum(days_month[:month-1]) + day return days_count ``` 2. 元组 ```python def day_of_year_tuple(date): days_month = (31,28,31,30,31,30,31,31,30,31,30,31) year, month, day = date.split('-') year, month, day = int(year), int(month), int(day) if (year%4==0 and year%100!=0) or year%400==0: days_month = (31,29,31,30,31,30,31,31,30,31,30,31) days_count = sum(days_month[:month-1]) + day return days_count ``` 3. 集合 ```python def day_of_year_set(date): days_month = {1:31,2:28,3:31,4:30,5:31,6:30, 7:31,8:31,9:30,10:31,11:30,12:31} year, month, day = date.split('-') year, month, day = int(year), int(month), int(day) if (year%4==0 and year%100!=0) or year%400==0: days_month[2] = 29 days_count = sum([days_month[i] for i in range(1, month)]) + day return days_count ``` 4. 字典 ```python def day_of_year_dict(date): days_month = {'January':31, 'February':28, 'March':31, 'April':30, 'May':31, 'June':30, 'July':31, 'August':31, 'September':30, 'October':31, 'November':30, 'December':31} year, month, day = date.split('-') year, day = int(year), int(day) if (year%4==0 and year%100!=0) or year%400==0: days_month['February'] = 29 days_count = sum([days_month[key] for key in days_month.keys() if key!=month]) + day return days_count ``` 以上是针对不同数据类型的实现,您可以根据需要选择其中一种来使用。具体调用方法如下: ```python date = '2022-02-08' days_count_list = day_of_year_list(date) # 使用列表实现的方法 days_count_tuple = day_of_year_tuple(date) # 使用元组实现的方法 days_count_set = day_of_year_set(date) # 使用集合实现的方法 days_count_dict = day_of_year_dict(date) # 使用字典实现的方法 print(f"使用列表实现的方法计算结果为:{days_count_list}") print(f"使用元组实现的方法计算结果为:{days_count_tuple}") print(f"使用集合实现的方法计算结果为:{days_count_set}") print(f"使用字典实现的方法计算结果为:{days_count_dict}") ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值