【发布时间】:2013-05-30 00:22:25
【问题描述】:
我有一个如下所示的元组列表
[(0, 33), (3, 26), (4, 95), (0, 28), (1, 12), (2, 3), (4, 69)]
如果第一个元素匹配(一次或多次),我想将元组的第二个元素相乘;如果不是我忽略元组。所以,输出应该是
33 * 28 + 95 * 69 = 7479
目前,我正在做以下事情:
- 使用计数器检查元组的第一个元素是否存在。
- 遍历集合以查看是否存在单元素元组或更多;忽略 1 元素的
- 迭代地将非 1 元素元组添加到字典并更新乘法
- 在字典的
values上使用sum函数
我想知道是否有一种 Pythonic 方法可以减少这种情况。我很确定我在这里把事情复杂化了。
【问题讨论】:
-
Pythonic 的方式可能是这样的:有一个其键是第一个元素的字典,并且只遍历整个列表一次,更新字典。每个值都包含诸如“是否见过不止一个”和“这是迄今为止这些项目的产品”等信息。
-
我想知道
ifilter之类的东西是否可以提供帮助。 -
在你的位置上,我会按照我上面描述的一步一步编写算法,而不用担心一些 itertools 函数。
标签: python python-2.7 tuples multiplication