Как можно посчитать сумму поля amount у словарей с одинаковыми uid и оставить только один словарь с обновленным значением amount?
1. Для вычисления общего количества одинаковых элементов в словаре можно использовать следующий код на Python:
```python
my_dict = {'a': 1, 'b': 2, 'c': 1, 'd': 3, 'e': 1}
counter = {}
for value in my_dict.values():
counter[value] = counter.get(value, 0) + 1
for key, value in counter.items():
print(f'Элемент {key} встречается {value} раз(а) в словаре.')
```
2. Для подсчета суммы поля amount у словарей с одинаковыми uid и обновления значения amount можно использовать следующий код на Python:
```python
data = [
{'uid': 1, 'amount': 100},
{'uid': 2, 'amount': 200},
{'uid': 1, 'amount': 150},
{'uid': 3, 'amount': 50}
]
uid_amount = {}
for item in data:
uid = item['uid']
amount = item['amount']
uid_amount[uid] = uid_amount.get(uid, 0) + amount
result = []
for uid, amount in uid_amount.items():
result.append({'uid': uid, 'amount': amount})
print(result)
```
В данном случае будет обновлен список `data`, где для каждого уникального uid будет просуммировано значение amount.
import json json_string = """[ { "uid_1c": "c1f5e839-0c1d-11ed-aa44-ac1f6bd30991", "number": "1", "amount": 19 }, { "uid_1c": "c1f5e839-0c1d-11ed-aa44-ac1f6bd30991", "number": "2", "amount": 10 }, { "uid_1c": "7421a94a-4327-11ed-aa45-ac1f6bd30990", "number": "3", "amount": 200 } ]""" json_object = json.loads(json_string) # делаем базовый словарь на каждый уникальный uid base_dict_elem = {el.get('uid_1c'): {'uid_1c': el.get('uid_1c'), 'number': 0, 'amount': 0} for el in json_object} # итерируемся по списку словарей(json) для заполнения основного словаря for el in json_object: uid = el.get('uid_1c') amount = el.get('amount') base_dict_elem[uid]['amount'] += amount # формируем список словарей с уникальными uid и статистикой result = [] counter = 1 for k, v in base_dict_elem.items(): v['number'] = counter result.append(v) counter += 1 print(result)
def unique_with_sum(arr, id_key, sum_key): unique = {} for n in arr: unique.setdefault(n[id_key], { **n, sum_key: 0 })[sum_key] += n[sum_key] return [*unique.values()] result = unique_with_sum(arr, 'uid_1c', 'amount')