Explain, please, on the fingers, what is happening here:

#!/usr/bin/env python # -*- coding: utf-8 -*- from collections import OrderedDict d = {'banana': 3, 'apple':4, 'pear': 1, 'orange': 2} a = OrderedDict() a['one'] = OrderedDict(sorted(d.items(), key=lambda t: t[0])) a['two'] = OrderedDict([('apple', 4), ('banana', 3), ('orange', 2), ('pear', 1)]) a['three'] = OrderedDict(sorted(d.items(), key=lambda t: t[1])) a['four'] = OrderedDict([('pear', 1), ('orange', 2), ('banana', 3), ('apple', 4)]) a['five'] = OrderedDict(sorted(d.items(), key=lambda t: len(t[0]))) a['six'] = OrderedDict([('pear', 1), ('apple', 4), ('orange', 2), ('banana', 3)]) print type(a) for key, value in a.items(): print str(key) + ": " + str(value) 

What does the key function do?

  • 2
    key is mentioned 5 times and never as a function. Three times as a parameter to the function sorted , (different functions are passed as a parameter value each time) and twice as a local variable in a for loop. About which key do you ask? - Arnial 3:42 pm

1 answer 1

 sorted(d.items(), key=lambda t: t[0]) #вернёт массив, состоязщий из tuple( key, value ) словаря d, отсортированный по ключу (первому элементу tuple) sorted(d.items(), key=lambda t: t[1]) #как и в предыдущем случае, но сортировка будет идти # по второму элементу tuple (по значению) sorted(d.items(), key=lambda t: len(t[0])) # сортировка по длине ключа #a.items возвращает массив tuple [('one', OrderedDict(...) ), ('two',-//-), ('three',-//-) ...] for key, value in a.items(): # здесь key это ключ из словаря a print str(key) + ": " + str(value)