Обновление (благодарят комментаторам): делегируйте средства immuntability, что клонирование ничего не достигает по присвоению.
, Когда каждый пишет:
myDelegate += AHandler
абсолютно новый экземпляр делегата создан и присвоен myDelegate.
Поэтому код ниже работал бы точно то же без вызова Клона.
<час>MulticastDelegate (базовый тип) имеет метод Клона.
, Чтобы смочь добраться до базового делегата Вы, возможно, должны были бы избежать обычного помощника, которого генерирует ключевое слово события, и справьтесь, вещи непосредственно (пользовательский добавляют и удаляют средства доступа).
Для показа этого:
class Program { public delegate void MyDelegate(string name); public event MyDelegate EventOne; public void HandlerOne(string name) { Console.WriteLine("This is handler one: {0}", name); } public void HandlerTwo(string name) { Console.WriteLine("This is handler two: {0}", name); } public void HandlerThree(string name) { Console.WriteLine("This is handler three: {0}", name); } public void Run() { EventOne += HandlerOne; EventOne += HandlerTwo; Console.WriteLine("Before clone"); EventOne("EventOne");MyDelegate eventTwo = (MyDelegate)EventOne.Clone();MyDelegate eventTwo = EventOne; Console.WriteLine("Afterclonecopy"); EventOne("EventOne"); eventTwo("eventTwo"); Console.WriteLine("Change event one to show it is different"); EventOne += HandlerThree; EventOne("EventOne"); eventTwo("eventTwo"); } static void Main(string[] args) { (new Program()).Run(); } }
Примерно так:
from operator import itemgetter
l = sorted(l, key=itemgetter('time'), reverse=True)
Или:
l = sorted(l, key=lambda a: a['time'], reverse=True)
вывод:
[{'time': 66}, {'time': 33}, {'time': 11}]
Если вы не хотите сохранять исходный порядок, вы можете использовать your_list.sort
который изменяет исходный список вместо создания копии типа sorted (your_list)
l.sort(key=lambda a: a['time'], reverse=True)