python内置函数小知识总结

目录

dict

知识点:列表解析式,zip,dict
对象的类型变化: 列表-元组-字典

#最开始是看到这样一个用法,觉得挺有意思,dict把列表中的元组变成字典
print(dict([(x,y) for x in range(1,5) for y in range(100,105)]))
>>>{1: 104, 2: 104, 3: 104, 4: 104}
#自己动手实验
import numpy as np
grades = np.random.rand(3)*100
names = ['张三','李四','王五']
print(type(grades),type(names))
print(grades,names)
print(dict([(name,grade)for name in names for grade in grades]))
>>><class 'numpy.ndarray'> <class 'list'>
[49.15836214  2.73379826  6.43290198] ['张三', '李四', '王五']
{'张三': 6.4329019812199295, '李四': 6.4329019812199295, '王五': 6.4329019812199295}
#发现value值都相同,有点不太对。分解后发现:dict() 把列表中的元组转换为对应的字典,应该是元组的生成出现了问题

#原来是因为双重for循环得到了9组数据,元组变字典的过程中,字典的key只能是唯一的,就默认只取了第一次读到的元组。
print([(name,grade)for name in names for grade in grades])
>>>[('张三', 49.15836214177073), ('张三', 2.733798259451403), ('张三', 6.4329019812199295), ('李四', 49.15836214177073), ('李四', 2.733798259451403), ('李四', 6.4329019812199295), ('王五', 49.15836214177073), ('王五', 2.733798259451403), ('王五', 6.4329019812199295)]

#需要用zip函数将两个列表中的元素分别对应起来,得到的就是对应的值了~
print(dict([(name,grade)for name,grade in zip(names,grades)]))
>>>{'张三': 49.15836214177073, '李四': 2.733798259451403, '王五': 6.4329019812199295}


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值