【发布时间】:2016-11-25 19:09:51
【问题描述】:
输入:
[["US", 2], ["UK", 3], ["FR", 4], ["US", 2], ["US", 2], ["UK", 2]]
输出:
[["US", 6], ["UK", 5], ["FR", 4]]
如果列表中的第一个元素匹配,我想对列表的第二个元素求和。我试过使用字典和集合,但我想不出一个逻辑。这可以在 Hadoop 或 Spark 中轻松完成,因为框架将承担 reduce 部分,我们很容易对值列表求和。但我不确定如何在 python 中做。有人可以帮忙吗?
注意:我正在寻找优化的解决方案。没有使用很多 for 循环。
什么都试过了:
import collections
l1 = [["US", 2], ["UK", 3], ["FR", 4]]
l2 = [["US", "us@mail.com"], ["UK", "uk@mail.com"], ["BR", "fr@mail.com"]]
l1 = dict(l1)
l2 = dict(l2)
l1set = set(l1.keys())
l2set = set(l2.keys())
for i in l1set & l2set:
print l2[i]
【问题讨论】:
-
请展示你的作品。你试过什么?
-
看来@bernie 和我想出了不同的解决方案。您要寻找的结果是什么?
-
您好@HaiVu,正如我所说,我无法提出逻辑。但这是我尝试过的简单列表。导入集合 l1 = [["US", 2], ["UK", 3], ["FR", 4]] l2 = [["US", "us@mail.com"], ["UK" , "uk@mail.com"], ["BR", "fr@mail.com"]] l1 = dict(l1) l2 = dict(l2) l1set = set(l1.keys()) l2set = set( l2.keys()) for i in l1set & l2set: print l2[i]
-
@naveench,下次请更新你的帖子,不要像这样在评论中添加代码。
-
您尝试的代码与您提出的问题几乎没有关系。
标签: python