【发布时间】:2013-03-21 06:35:40
【问题描述】:
我有一个“标记”元组列表...每个元组是 (tag_id, value)...就像这样:
my_list = [(tag_A, 100), (tag_A, 200), (tag_A, 300), (tag_A, 400), (tag_B, 400), (tag_B, 600)]
我想用相同的标签对每个元组的值求和...这样:
sum_of_all_values_with_tag_A() = 1000
sum_of_all_values_with_tag_B() = 1000
我想不出一个简单的 Pythonic 方法。
sum(set(value for tag_id, value in my_list))
...返回所有值的总和。
我想我可以用 for 或 while 循环来包装它,这样只有带有我想要求和的标签的元组才会被那个表达式触及......?我需要将与两个标签关联的值相加......导致两个不同的总数,如上所示。但是不能完全理解这种东西的优雅语法。
这发生在一个预先存在的函数内部。如果没有嵌套函数,那就太好了。
欢迎提出任何建议!
【问题讨论】:
-
哇。 @Martijn 和hughdbrown:我喜欢both 这两个答案!我认为 Martijn 的回答更贴切地反映了我的想法,但我认为 Hugh 的回答更具可读性/更易于消化。哪个性能更高——速度方面?任何想法? (重要吗?)