2015-01-11 2 views
0

У меня есть ниже словаря:Как работают функции max и min?

d = {1: 'zz', 2: 'we', 'as': 'dfda', 'x': 'zyz'} 

И max и min возвращение следующее:

max(d) 
'x' 

min(d) 
1 

Как max и min действительно работают в этом случае?

+1

Не могли бы вы уточнить, о чем вы спрашиваете? Вы посмотрели, например. 'Сортирован (д)'? – jonrsharpe

+0

http://stackoverflow.com/questions/3270680/how-does-python-compare-string-and-int – Maroun

+1

Следует отметить, что это приведет к созданию TypeError в python 3, поскольку python 3 считает, что не существует естественного упорядочения между ints и строками. – Dunes

ответ

1

max и min работа над итерами. Если вы попытаетесь преобразовать словарь в итерируемый, вы вернете его ключи. Итак, max(d) - это то же самое, что и max(1,2,'as','x'). Есть некоторые сведения о заказе различных встроенных типов here. Например, 1< "a" - True. Это используется, чтобы найти максимум списка. Аналогично для min. В качестве примечания я бы не рекомендовал делать что-то подобное в производственном коде.

1

min и max функции, применяемые к словарям, работают на клавишах словаря.

В вашем случае, они должны работать на

[1, 2, 'as', 'x'] 

Как вы можете видеть, существует несколько типов данных, содержащихся в нем. In Python 2.7, if the types are different, then the string value of the types are used for comparison.. Цитата из этого раздела,

Обратите внимание, что сравнение объектов разных типов является законным. Результат является детерминированным, но произвольным: типы упорядочены по их имени. Таким образом, список всегда меньше строки, строка всегда меньше кортежа и т. Д. (Не следует полагаться на правила для сравнения объектов разных типов, они могут изменяться в будущей версии языка.)

Так что, если вы на самом деле отсортировать ключи словаря,

>>> sorted(d) 
[1, 2, 'as', 'x'] 

Как вы можете видеть сейчас, является наименьшим 1 и самым большим является x.