We have, for example:
rows = [
{'fname': 'Brian', 'lname': 'Jones', 'uid': 1003},
{'fname': 'David', 'lname': 'Beazley', 'uid': 1002},
{'fname': 'John', 'lname': 'Cleese', 'uid': 1001},
{'fname': 'Big', 'lname': 'Jones', 'uid': 1004}
]
and
rows_by_fname = sorted(rows, key=lambda r: r['fname'])
this,
key=lambda r: r['fname']
how does it work? as my understanding that r is input for lambda function, right? and that r must be equal to rows, but we never called that lambda function and passed any arguments so what gets assigned to r and how?