<div dir="ltr"><div dir="ltr"><div dir="ltr"><div class="gmail_default" style="font-size:small">Dear Nyall,</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, May 20, 2019 at 9:01 AM Anita Graser <<a href="mailto:anitagraser@gmx.at">anitagraser@gmx.at</a>> wrote:</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_quote"><div style="font-size:small">Thank you Nyall, that's really helpful! The expression system is awesome and powerful but I don't think anyone could guess how to use it correctly in PyQGIS.</div><div style="font-size:small">I'll write it up into a tutorial and the documentation team is always welcome to reuse the content in the official documentation. </div></div></div></blockquote><div><br></div><div><div class="gmail_default" style="font-size:small">The following code works for me. However, I'm uncertain if the scope.setFeature approach below is how it's meant to be used. Is there something I should change?</div><div class="gmail_default" style="font-size:small"><br></div><div class="gmail_default">context = QgsExpressionContext()</div><div class="gmail_default">scope = QgsExpressionContextUtils.globalProjectLayerScopes(vl)</div><div class="gmail_default">context.appendScopes(scope)</div><div class="gmail_default"><br></div><div class="gmail_default">expression1 = QgsExpression('Revenue/Employees')</div><div class="gmail_default">expression2 = QgsExpression('sum(Revenue)')</div><div class="gmail_default"><br></div><div class="gmail_default">vl.startEditing()</div><div class="gmail_default"><br></div><div class="gmail_default">for f in vl.getFeatures():</div><div class="gmail_default">    scope[-1].setFeature(f)</div><div class="gmail_default">    f['Rev. per employee'] = expression1.evaluate(context)</div><div class="gmail_default">    f['Sum'] = expression2.evaluate(context)</div><div class="gmail_default">    vl.updateFeature(f)</div><div class="gmail_default"><br></div><div class="gmail_default">vl.commitChanges()<span style="font-size:small"></span></div><br></div><div><div class="gmail_default" style="font-size:small">Regards,</div><div class="gmail_default" style="font-size:small">Anita</div><br></div><div> </div></div></div></div>