list = ['1297546327:0', '1297546327:1', '1297546327:1', '1297546327:0', '1297546327:0', '1297546327:0', '1297546327:0', '1297546327:1', '1297546327:1', '1297546327:1', '5138875960:0', '5138875960:1', '5138875960:0', '5138875960:0', '5138875960:1']
I have a list like this and I need to add values after ":" To get it like this
total = ['1297546327:5','5138875960:2']
How can you do that??
>Solution :
Use itertools.groupby, for example:
alist = ['1297546327:0', '1297546327:1', '1297546327:1', '1297546327:0', '1297546327:0', '1297546327:0', '1297546327:0', '1297546327:1', '1297546327:1', '1297546327:1', '5138875960:0', '5138875960:1', '5138875960:0', '5138875960:0', '5138875960:1']
alist = [obj.split(':') for obj in alist]
result = {}
for k, g in groupby(sorted(alist), key=lambda x: x[0]):
result[k] = sum(int(v) for _, v in g)
print(result)
# if you want num in ascending order (for desending order pass reverse=True to the sorted function):
# result = dict(sorted(result.items(), key=lambda obj: obj[1]))
print([f'{k}:{v}' for k, v in result.items()])
Output:
{'1297546327': 5, '5138875960': 2}
['1297546327:5', '5138875960:2']