【发布时间】:2022-11-12 07:22:40
【问题描述】:
我要通过将元组内的整数相乘,然后将它们与各自的匹配项相加,来找到由它们的“#”表示的元组内的最大值。
例子:
[[1,...("9744", 9, 44.95)],
[2, ... ("9744", 9, 44.95)]...]
Multiply 9 and 44.95:
[[1,...("9744", 9, 44.95)],
[2, ... ("9744", 9, 44.95)]...]
[[1,...("9744", 809.1)],
[2, ... ("9744", 809.1)]...]
现在我们知道“9744”在他们的元组中具有最高值。
我已经使用 max() 和各种 lambda 函数这样做了。我不想过多地更改我的代码,并且想要一些关于如何从这里开始的提示。
orders = [[1, ("5464", 4, 9.99), ("8274",18,12.99), ("9744", 9, 44.95)],
[2, ("5464", 9, 9.99), ("9744", 9, 44.95)],
[3, ("5464", 9, 9.99), ("88112", 11, 24.99)],
[4, ("8732", 7, 11.99), ("7733",11,18.99), ("88112", 5, 39.95)]]
我的代码:
print(list(map(lambda x: (max(list(map(lambda a: (a[0], a[1]+a[1]),(list(map(lambda y: (y[0], y[1]*y[2]), x[1:]))))))), orders)))
我的输出:
[('9744', 809.1), ('9744', 809.1), ('88112', 549.78), ('88112', 399.5)]
期望的输出:
["9744", 809.1]
我想知道,折叠我的输出值以获得所需输出的最有效方法是什么。我必须在这里实现一个 if 语句吗?
【问题讨论】:
-
“我要通过将元组内的整数相乘,找到元组内字符串表示的最大值。”这是我在精神上检查的地方。字符串与整数的乘积有什么关系?
-
@timgeb 英语不是我的第一语言,如果我想要的输出在产品结果前面有字符串。那是不是措辞不正确?
-
编码为字符串的最高 int 是“88112”,为什么在所需的输出中是“9744”?
-
@timgeb 如果我的编辑弥补了我试图解释的内容,请告诉我。