#python #dictionary
Вопрос:
как динамически умножить все количество, используя только один цикл for
a = {'name': 'abc', 'lines': [ (0, 0, {'product': 'abc', 'qty': 00}), (0, 0, {'product': 'gds', 'qty': 20}), (0, 0, {'product': 'def', 'qty': 100})]}
Комментарии:
1. Это сложно, потому что значения находятся внутри кортежа. Однако,
results = []; for v in a["lines"]: r = v[2]; r["qty"] *= 100; results.append(tuple(v[0], v[1], r))
. Наконец,a["lines"] = results
. Дайте мне знать, если возникнут проблемы.2.
for _, _, d in a['lines']: d['qty'] *= 100;
?3. @LarrytheLlama
for v in a["lines"]: r = v[2]; r["qty"] *= 100;
изменила бы правила на месте. В списке нет необходимостиresults
.4. @Ch3steR Я думал, что кортежи нельзя изменить? Может быть, я ошибаюсь…
5. @LarrytheLlama кортежи, конечно, неизменяемы, но в том, что для вас никогда не менялось
v
, к которому вы обращалисьv[2]
, что дает вам диктант, который можно изменить на месте.