Python 如何添加第二项?
因此,我得到了一份清单:Python 如何添加第二项?,python,Python,因此,我得到了一份清单: list2=['A','0'],['B','1'],['B','4'],['B','2'],['B','0'],['C','0'],['C','1'],['C','2'],['D','3'],['D','0'] 如果子列表中的第一项相同,我需要添加第二项。怎么做 result expected:[['A', 0],['B',7],['C',3],['D',5]] 使用dict存储列表第一项的计数使用集合: from collections import default
list2=['A','0'],['B','1'],['B','4'],['B','2'],['B','0'],['C','0'],['C','1'],['C','2'],['D','3'],['D','0']
如果子列表中的第一项相同,我需要添加第二项。怎么做
result expected:[['A', 0],['B',7],['C',3],['D',5]]
使用dict存储列表第一项的计数使用集合:
from collections import defaultdict
from operator import itemgetter
list2= [['A', '0'], ['B', '1'], ['B', '4'], ['B', '2'], ['B', '0'], ['C', '0'], ['C', '1'], ['C', '2'], ['D', '2'], ['D', '3'], ['D', '0']]
result = defaultdict(int)
for item in list2:
a, value = item
result[(a)] += int(value)
print(sorted([[a, total] for a,total in result.items()], key=itemgetter(0)))
让,
作为输入
您可以使用operator模块中的itemgetter获取所有字符,set()将获取唯一的元素
有了它,您就可以遍历列表2来匹配每个唯一的字符,并对结果列表求和
>>> from operator import itemgetter
>>> [(c,sum([int(val) for st,val in list2 if st==c])) for c in set(map(itemgetter(0),list2))]
[('A', 0), ('C', 3), ('B', 7), ('D', 5)]
分解代码
>>> map(itemgetter(0),list2)
['A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'D', 'D', 'D']
>>> set(map(itemgetter(0),list2))
set(['A', 'C', 'B', 'D'])
>>> [(c,sum([int(val) for st,val in list2 if st==c])) for c in set(map(itemgetter(0),list2))]
[('A', 0), ('C', 3), ('B', 7), ('D', 5)]
添加一个项目是如何产生一个较短的列表的?只需在列表上循环并使用默认键值创建一个字典,如果键值不存在或者是第一次添加的…这不是添加一个项目。假设每个子列表中的第二项都是分数,字母('a','B','C','D')是一个人。。结果应该是每个人的总分的子列表。例如:我们从['B',1+4+2+0]中得到了['B',7],您可以使用
collections.Counter
(尽管它将丢弃0
值)
>>> from operator import itemgetter
>>> [(c,sum([int(val) for st,val in list2 if st==c])) for c in set(map(itemgetter(0),list2))]
[('A', 0), ('C', 3), ('B', 7), ('D', 5)]
>>> map(itemgetter(0),list2)
['A', 'B', 'B', 'B', 'B', 'C', 'C', 'C', 'D', 'D', 'D']
>>> set(map(itemgetter(0),list2))
set(['A', 'C', 'B', 'D'])
>>> [(c,sum([int(val) for st,val in list2 if st==c])) for c in set(map(itemgetter(0),list2))]
[('A', 0), ('C', 3), ('B', 7), ('D', 5)]