求助,怎么用最简单的方便实现 list 内的数值运算需求?

2018-09-13 11:45:41 +08:00
 css3

有这么一个字典,现在需要 把 height,y 分别乘以 1080,然后取整(应该需要四舍五入), 把 width,x分别乘以1920,然后取整(应该需要四舍五入), 最后放到一个 list 里边, 然后还需要做一个加法,有什么简单的办法吗,写 for 循环要 2 大坨,不甘心,看看万能的 v 友,有什么快速简单的方法没有

a = {'height': 0.724074, 'width': 0.226042, 'x': 0.295833, 'y': 0.275926}

最后输出一个:

[568, 298, 1002, 1080]  # 顺序和数值有些变化 [x, y, x + width, y + height]
2325 次点击
所在节点    Python
10 条回复
zhengyongtao
2018-09-13 11:59:41 +08:00
总共就四个数值为什么要写 for 循环?直接列表推导式不就好了
css3
2018-09-13 12:02:13 +08:00
@zhengyongtao 列表推导也不好直接生成我想要的结果啊,只能取到 values, 再循环?
epicnoob
2018-09-13 12:27:22 +08:00
>>> k = numpy.array([[0,0,1920,0],[0,0,0,1080],[0,1920,1920,0],[1080,0,0,1080]])
>>> numpy.dot(k, numpy.array(list(a.values())).reshape(4,1))
cbiqih
2018-09-13 12:46:12 +08:00
from operator import mul

a = {'height': 0.724074, 'width': 0.226042, 'x': 0.295833, 'y': 0.275926}
b = {'height': 1080, 'width': 1920, 'x': 1920, 'y': 1080}
result = sum(map(lambda x: mul(*x), zip(a.values(), b.values())))
xpresslink
2018-09-13 12:48:34 +08:00
就四个数还折腾什么。
真够懒的,虽然是程序员三大美德之一吧,但是也得注意一下 kiss 原则
cbiqih
2018-09-13 12:52:05 +08:00
考虑到 dict 是无序的,获取的 values 不一定能一一对应上.

a = {'height': 0.724074, 'width': 0.226042, 'x': 0.295833, 'y': 0.275926}
b = {'height': 1080, 'width': 1920, 'x': 1920, 'y': 1080}
result = sum(list(value * b[key] for key,value in a.items()))
cbiqih
2018-09-13 12:59:11 +08:00
看来我理解错了你的加法~
a = {'height': 0.724074, 'width': 0.226042, 'x': 0.295833, 'y': 0.275926}
b = {'height': 1080, 'width': 1920, 'x': 1920, 'y': 1080}
d = {key:int(value * b[key]) for key,value in a.items()}
return [d['x'], d['y'], d['width'] + d['x'], d['height'] + d['y']]
css3
2018-09-13 13:04:02 +08:00
@cbiqih 多谢,你这个办法真比我简单些,引入字典比,也是一绝啊,我把 int 换成 round 了,可以四舍五入
css3
2018-09-13 13:09:37 +08:00
@cbiqih key:int(value * b[key])请教一下这个是什么意思啊,看不太懂
cbiqih
2018-09-13 14:07:08 +08:00
@css3 字典推导式

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/488878

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX