Вы можете использовать collections.defaultdict()
, чтобы ваши значения автоматически добавлялись при обнаружении того же ключа, например:
import collections
listA = ['Apple', 'Apple', 'Banana', 'Orange', 'Pineapple', 'Pineapple']
listB = ['5.0', '9.0', '12.0', '2.0', '8.0', '1.0']
result = collections.defaultdict(float)
for k, v in zip(listA, listB):
result[k] += float(v)
Это, однако, приведет к результату с плавающей точкой, т.е.:
{'Apple': 14.0, 'Banana': 12.0, 'Orange': 2.0, 'Pineapple': 9.0}
Если вам нужны строковые результаты, вы можете либо обработать результат:
result = {k: str(v) for k, v in result.iteritems()} # Python 3.x: result.items()
# {'Apple': '14.0', 'Banana': '12.0', 'Orange': '2.0', 'Pineapple': '9.0'}
Или вы можете обработать все без collections.defaultdict()
:
listA = ['Apple', 'Apple', 'Banana', 'Orange', 'Pineapple', 'Pineapple']
listB = ['5.0', '9.0', '12.0', '2.0', '8.0', '1.0']
result = {}
for k, v in zip(listA, listB):
result[k] = str(float(result.get(k, 0)) + float(v))
# {'Apple': '14.0', 'Banana': '12.0', 'Orange': '2.0', 'Pineapple': '9.0'}