【发布时间】:2017-02-05 16:03:28
【问题描述】:
我有一个元组列表:
[ ('A',100), ('B',50), ('A',50), ('B',20), ('C',10) ]
我试图总结所有具有相同字母的数字。 IE。我要输出
[('A', 150), ('B', 70), ('C',10)]
我尝试使用 set 来获取唯一值,但是当我尝试将第一个元素与 set 进行比较时,我得到了
TypeError: unsupported operand type(s) for +: 'int' and 'str'
有什么快速的方法可以按字母匹配数字吗?
【问题讨论】:
-
根据您的错误消息,您正在尝试将一个字符串和一个整数相加,如果不进行类型转换,这是非法的。
-
使用集合来提取唯一值。然后使用嵌套循环查找与集合匹配的数字的值,然后将它们相加。我知道如何以巨大的计算成本来做到这一点,但如果我有几百万个条目,那将需要很长时间
-
不是我有一个庞大的数据集需要执行计算,而且我的方法太慢了
-
人们在直接回答具体问题时经常会迷失方向,而没有解决根本问题。为什么你会得到一个这样的元组列表?在 Python 中处理数据有很多更好的方法(例如 defaultdicts)。