集合和字典的应用作业参考答案

集合和字典的应用作业参考答案

练习1:设计一个函数,传入的参数是一个列表,返回去掉列表中重复元素之后的列表。
def remove_dups1(items):
    return list(set(items))
练习2:设计一个函数,传入的参数是一个列表,返回去掉列表中重复元素之后的列表,列表中的元素需要保持原来的顺序。
def remove_dups2(items):
    items2 = []
    seen = set()
    for item in items:
        if item not in seen:
            items2.append(item)
            seen.add(item)
    return items2 
练习3:下面的字典中保存了某些公司的股票代码及股票价格。

说明:美股的股票代码是指英文字母代码,如:AAPL、GOOG。

prices = {
    'AAPL': 191.88,
    'GOOG': 1186.96,
    'IBM': 149.24,
    'ORCL': 48.44,
    'ACN': 166.89,
    'FB': 208.09,
    'SYMC': 21.29
}
  1. 请输出价格最高的股票对应的股票代码。

    print(max(prices, key=lambda x: prices[x]))
    
  2. 用股票价格大于100的股票创建一个新的字典。

    stocks = {key: value for key, value in prices.items() if value > 100}
    
  3. 按股票价格从高到低输出股票代码。

    sorted_stocks = sorted(prices, key=lambda x: prices[x], reverse=True)
    for code in sorted_stocks:
        print(code)
    
练习4:用字典来保存学生的信息,学生信息包括:学号(id)、姓名(name)、性别(sex)、语文成绩(verbal)、数学成绩(math)、联系电话(tel),用一个列表保存6个学生的信息,如下所示,编写代码完成下面的操作。
students = [
    {'id': 1001, 'name': '周伟',  'sex': None, 'verbal': 90, 'math': 90, 'tel': '13512345670'},
    {'id': 1002, 'name': '赵刚',  'sex': True, 'verbal': 56, 'math': 80, 'tel': '13512345678'},
    {'id': 1003, 'name': '李强',  'sex': True, 'verbal': 48, 'math': 70, 'tel': '13512345680'},
    {'id': 1004, 'name': '刘毅',  'sex': None, 'verbal': 92, 'math': 60, 'tel': '13512345688'},
    {'id': 1005, 'name': '孙坚',  'sex': True, 'verbal': 85, 'math': 50, 'tel': '13512345698'},
    {'id': 1006, 'name': '王小美',  'sex': False, 'verbal': 37, 'math': 40, 'tel': '13512345699'},
]
  1. 输出语文成绩不及格学生的人数(假设成绩为百分制,及格分数为60分)。

    print(len([stu for stu in students if stu['verbal'] < 60]))
    
  2. 输出数学成绩不及格学生的学号、姓名和成绩(假设成绩为百分制,及格分数为60分)。

    students2 = [stu for stu in students if stu['math'] < 60]
    for stu in students2:
        print(stu['id'], stu['name'], stu['math'])
    
  3. 输出联系电话尾号为8的学生的学号和姓名。

    students3 = [stu for stu in students if stu['tel'][-1] == '8']
    for stu in students3:
        print(stu['id'], stu['name'])
    
  4. 删除学生列表中性别为None的学生。

    students = [stu for stu in students if stu['sex'] is not None] 
    
  5. 输出男学生和女学生的平均成绩(包括语文和数学两门课程)。

    male_scores = [stu['verbal'] + stu['math'] for stu in students if stu['sex']]
    print(f'男学生平均成绩: {sum(male_scores) / len(male_scores) / 2:.1f}分')
    female_scores = [stu['verbal'] + stu['math'] for stu in students if not stu['sex']]
    print(f'女学生平均成绩: {sum(female_scores) / len(female_scores) / 2:.1f}分')
    
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值