Есть два способа сделать это:
(1) Произвольно выбрать из записей, которые соответствуют максимальному значению:
import random
key_list=[(2, 'just', 'sd'), (2, 'great', 'sd'), (1, 'just great', 'sd')]
m = max(i[0] for i in key_list)
print(random.choice([i for i in key_list if i[0] == m]))
(2) Использовать специальную функцию клавиш, которая применяет случайный тай-брейк:
print(max(key_list, key=lambda i: i[0] + random.random()))
# or
print(max(key_list, key=lambda i: (i[0], random.random())))
Первый создает System.Web.UI.WebControls.Button
, а второй создает System.Web.UI.HtmlControls.HtmlInputButton
.
Оба являются серверными элементами управления, но элементы управления в пространстве имен WebControls
обычно имеют немного больше функциональных возможностей, чем элементы управления в пространстве имен HtmlControls
. Обычно они помещают некоторые данные в ViewState
для отслеживания своего состояния, и у них есть события обратной передачи на стороне сервера.
Каждый элемент управления в пространстве имен HtmlControls
точно соответствует элементу HTML,
Кнопка, представленная
, будет преобразована в серверный веб-элемент управления с расширенной моделью состояния и различными свойствами. и методы, которые имеют более четкое представление в реальном мире, например Button.Text = "Click Me".
Кнопка, представленная
будет преобразован в серверный элемент управления html, представленный HtmlInputButton; with имеет ограниченные свойства, методы и события. Большинство свойств напоминают эквиваленты html, такие как Button.Value = "Click Me".
Обратите внимание, что элементы на странице разметки предварительно обрабатываются / компилируются перед использованием и будут преобразованы в представление класса, в котором представлен каждый элемент с помощью контроля.
Первая строка - это ASP.NET, вторая - простой XHTML.
Первая строка анализируется и интерпретируется на стороне сервера, после чего генерируется HTML-код, который в значительной степени соответствует ваш второй пример. Кнопка ASP.NET на самом деле немного больше, чем легкая оболочка над функциональностью кнопки ввода HTML, и ее следует использовать везде, где вам нужно обрабатывать событие Click
на стороне сервера (или в общем случае любые события) , и обычно это правильный вариант, поскольку вы позволяете ASP.NET абстрагироваться от идеи кнопки на вашей странице.
функциональность оба элемента управления одинаковы с той разницей, что первый - это элемент управления .net, а второй - элемент управления html, который можно сделать серверным, используя
runat = "server".
, а первый богат на эванты и методы thn второй ....
С такими элементами управления нет событий сервера, но вы можете использовать его в коде для изменения его свойств.
Ваш второй вариант, вероятно, даже не сработает. runat = "server" будет отображаться непосредственно в выводе HTML, где он не будет иметь никаких функциональных возможностей и только нарушит проверку HTML.
input - это элемент HTML, который имеет только свойства HTML и определенно не имеет никаких методов.