python笔记task05:字典集合序列、集合、序列

九、字典

练习题

1、字典基本操作

字典内容如下:

dic = {
    'python': 95,
    'java': 99,
    'c': 100
    }

用程序解答下面的题目

字典的长度是多少

dic = {
    'python': 95,
    'java': 99,
    'c': 100
    }
len(dic) #3

请修改’java’ 这个key对应的value值为98

dic["java"] = 98
dic #{'python': 95, 'java': 98, 'c': 100}

删除 c 这个key

dic.pop("c")
dic  #{'python': 95, 'java': 98}

增加一个key-value对,key值为 php, value是90

dic.update({"php":90})
dic  #{'python': 95, 'java': 98, 'php': 90}

获取所有的key值,存储在列表里

a = dic.keys()  #type(a)返回  dict_keys
key_lst = list(a)
print(key_lst,type(key_lst)) #['python', 'java', 'php'] <class 'list'>

获取所有的value值,存储在列表里

b = dic.values()  #type(a)返回  dict_keys
value_lst = list(b)
print(value_lst,type(value_lst)) 
#[95, 98, 90] <class 'list'>

判断 javascript 是否在字典中

dic.get("javascript")#没有返回值
但是python就是有返回值的
dic.get("python")
#95
def check_key(key_name,dictname):
    for one in dictname:
        if key_name in dictname:#或dic.keys()
            print('key在字典中!')
            break
        else:
            print('key不在字典中!')
            break
check_key("javascript",dic)
#key不在字典中!
#没有break会输出三遍

获得字典里所有value 的和

print(sum(val_lst)) #283

获取字典里最大的value

print(sorted(val_lst,reverse=True)[0]) #98

获取字典里最小的value

print(sorted(val_lst,reverse=False)[0]) #90

字典 dic1 = {‘php’: 97}, 将dic1的数据更新到dic中

dic1 = {'php': 97}
dic.update(dic1)
print(dic) #{'python': 95, 'java': 98, 'php': 97}

2、字典中的value

有一个字典,保存的是学生各个编程语言的成绩,内容如下

data = {
        'python': {'上学期': '90', '下学期': '95'},
        'c++': ['95', '96', '97'],
        'java': [{'月考':'90', '期中考试': '94', '期末考试': '98'}]
        }

各门课程的考试成绩存储方式并不相同,有的用字典,有的用列表,但是分数都是字符串类型,请实现函数transfer_score(score_dict),将分数修改成int类型

def transfer_score(data):
    # your code here

参考这个:参考

示例代码
import pprint


def transfer_score(data):
    # 如果data是字典
    if isinstance(data, dict):
        for key, value in data.items():
            data[key] = transfer_score(value)
        return data

    # 如果data 是列表
    if isinstance(data, list):
        data_lst = []
        for item in data:
            data_lst.append(transfer_score(item))

        return data_lst

    if isinstance(data, str):
        return int(data)


if __name__ == '__main__':
    data = {
        'python': {'上学期': '90', '下学期': '95'},
        'c++': ['95', '96', '97'],
        'java': [{'月考': '90', '期中考试': '94', '期末考试': '98'}]
    }

    data = transfer_score(data)
    pprint.pprint(data)

十、集合

练习题

怎么表示只包含⼀个数字1的元组。

a = (1,)
a  #(1,)
a=(1)不行

创建一个空集合,增加 {‘x’,‘y’,‘z’} 三个元素。

miffy = set()
miffy.add('apple')
miffy.add('carrot')
miffy.add('wucidici')
miffy   #{'apple', 'carrot', 'wucidici'}

列表[‘A’, ‘B’, ‘A’, ‘B’]去重。

d = ['A','B','A','B']
D = set(d)
d = list(D)
print(d)  #['B', 'A']
当然也能用教程里的循环,不过我比较懒

求两个集合{6, 7, 8},{7, 8, 9}中不重复的元素(差集指的是两个集合交集外的部分)。

s1 = {6, 7, 8}
s2 = {7, 8, 9}
s1-s2#{6}
这里为什么返回的是6,迷惑
s1 = {6, 7, 8}
s2 = {7, 8, 9}
c = s1.difference(s2)
c#{6}

求{‘A’, ‘B’, ‘C’}中元素在 {‘B’, ‘C’, ‘D’}中出现的次数。

十一、序列

练习题

求列表 [2,3,4,5] 中每个元素的立方根

b = [2,3,4,5]
a = [i**(1/3) for i in b ]
a
"""
[1.2599210498948732,
 1.4422495703074083,
 1.5874010519681994,
 1.7099759466766968]
"""
想用map的,但是还没想好怎么用,先空着

将[‘x’,‘y’,‘z’] 和 [1,2,3] 转成 [(‘x’,1),(‘y’,2),(‘z’,3)] 的形式

l1=['x', 'y', 'z']
l2=[1,2,3]
l3=zip(l1,l2)
print(type(l3), l3,list(l3))
#<class 'zip'> <zip object at 0x0000027B9B550B48> [('x', 1), ('y', 2), ('z', 3)]

参考

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值