Ich habe folgendes:DefaultDict verhält sich in beiden Fällen
{'reportid1':{'name':'sriram sathyan','amount':3000}, .....}
Ich versuchte, den followig Code:
names = defaultdict(dict)
for item in a:
report_id = item['_id']['reportId']
amount = item['amount']
names[report_id] = {'name': item['_id'].get('name','')}
if amount != 0:
names[report_id].update({'amount': amount})
print(dict(names))
Ausgänge:
a = [{ "_id" : { "reportId" : "5a27cda63fff647c33a14b31" }, "amount" : 3000 },
{ "_id" : { "reportId" : "5a27cda63fff647c33a14b31", "name" : "sriram sathyan" }, "amount" : 0 },
{ "_id" : { "reportId" : "5a27cf173f978655f2efbee7" }, "amount" : 1200 },
{ "_id" : { "reportId" : "5a27cf173f978655f2efbee7", "name" : "karthik subbaraj" }, "amount" : 0 }
]
ich die folgende Struktur wollte
{'5a27cda63fff647c33a14b31': {'name': 'sriram sathyan'}, '5a27cf173f978655f2efbee7': {'name': 'karthik subbaraj'}}
(nicht das, was ich wollte)
Ich änderte dann den obigen Code zu:
for item in a:
report_id = item['_id']['reportId']
amount = item['amount']
if amount != 0:
names[report_id] = {'amount': amount}
names[report_id].update({'name': item['_id'].get('name','')})
print(dict(names))
XLR-:
{'5a27cda63fff647c33a14b31': {'amount': 3000, 'name': 'sriram sathyan'}, '5a27cf173f978655f2efbee7': {'amount': 1200, 'name': 'karthik subbaraj'}}
(was ich wollte !!!!!)
So ist die Frage => Wie könnte die Platzierung der if-Anweisung eine solche Änderung verursachen? Oder ist es etwas, das ich hier vermisse?
Danke. Ich schätze die Zeit, die ich brauche, um die Antwort auf diese Weise zu bearbeiten und zu formatieren :) – Adarsh