Как можно посчитать сумму поля 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.
<pre><code class="python">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)</code></pre>
<pre><code class="python">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')</code></pre>