python - 如何乘以一个元组?
问题描述
我想乘以一个元组。
y = 0.1, 0.2, 0.2, 0.4, 0.1
x = {('S', 'A', 'C', 'T'): (0.2, 0.1, 0.9, 3, 4), ('S', 'C', 'T'): (0.4. 0.1, 0.3, 3,1)}
预期输出:
res = {('S', 'A', 'C', 'T'): (0.02, 0.02, 0.18, 1.2, 0.4), ('S', 'C', 'T'): (0.04. 0.02, 0.06, 1.2, 0.1)}
我的代码是:
from fuctools import partial:
res = {}
keys = list(set.keys())
vals = list(set.values())
mul = lambda x, y: x*y
for n in vals:
res.extend(map(partial(mul, x), y))
res = dict(res)
print(res)
但这会导致 dict 没有属性的错误'extend'
。
解决方案
这应该可以解决问题:
y = 0.1, 0.2, 0.2, 0.4, 0.1
x = {('S', 'A', 'C', 'T'): (0.2, 0.1, 0.9, 3, 4), ('S', 'C', 'T'): (0.4, 0.1, 0.3, 3,1)}
for k, v in x.items():
x[k] = tuple(v[i] * y[i] for i in range(len(y)))
或者(正如 Alex Hall 在下面的评论中建议的那样)你可以使用这样的zip
函数:
for k in x.keys():
x[k] = tuple(a[0] * a[1] for a in zip(y, x[k]))
我建议使用上述方法之一,而不是您原来的方法。但为了将来参考,您收到错误的原因dict has no attribute 'extend'
是这extend()
是一种用于列表的方法,而不是用于字典的方法。当您尝试调用res.extend()
它时会抛出此异常,因为它res
是 a dict
,而不是 a list
。如果要将多个键/值对添加到 dict,请使用该update()
方法。
推荐阅读
- html - 使用 Parsel 选择器提取类名内容时绕过 em 标签
- angular - 在到达服务器之前,Angular 7 对服务器的所有请求都处于待处理状态
- android - 面临与元素类型“uses-permission”关联的错误“tools:node”未绑定
- google-analytics - 我们如何使用谷歌分析跟踪网站上的 mp4 视频?
- php - Laravel - LoginController::authenticated() 没有在每次登录时触发?
- solr - 尽管退出,Solr 找不到配置文件
- c# - 返回每月的第 4 天而不是第 4 天
- python-3.x - Python:我有文本文件,需要按日期时间数据升序排序
- c++ - OpenCV SVM 分类器 图像识别
- three.js - 三.js如何通过人脸索引找到人脸的顶点?