Este é o arquivo json:
[
{"name": "Saeed"},
{"name": "Joseph"},
{"name": "Mary"},
{"name": "Peter"}
]
Vou iterar sobre ele e adicionar uma nova chave chamada id
para cada uma, e seu valor é único.
Este é o meu loop for atual, mas incrementa apenas o primeiro item:
import json
with open('db.json', 'r') as file:
data = json.load(file)
data.sort(key=lambda x: x['name'])
for i in range(1, len(data) + 1):
for d in data:
d['id'] = i
break
Saída atual:
for i in data:
{'name': 'Joseph', 'id': 4}
{'name': 'Mary'}
{'name': 'Peter'}
{'name': 'Saeed'}
A saída esperada é:
{'name': 'Joseph', 'id': 1}
{'name': 'Mary', 'id': 2}
{'name': 'Peter', 'id': 3}
{'name': 'Saeed', 'id': 4}
A questão é o
break
. O código correto é:Você não precisa de um loop para o valor do id.