Почему объект dict_keys игнорирует порядок проверки равенства, но не объект dict_values?Python

Программы на Python
Anonymous
Почему объект dict_keys игнорирует порядок проверки равенства, но не объект dict_values?

Сообщение Anonymous »

Фрагмент кода
Код:

Код: Выделить всё

from collections import Counter

s1 = "yxxx"
s2 = "xyyy"

map1 = Counter(s1)
map2 = Counter(s2)

print(map1.keys())
print(map2.keys())

print("Are map1's keys and map2's keys equal:", map1.keys() == map2.keys())

print()
print(map1.values())
print(map2.values())
print("Are map1's values and map2's values equal:", map1.values() == map2.values())
print("Are SORTED map1's values and map2's values equal:", sorted(map1.values()) == sorted(map2.values()))
Результаты:

Код: Выделить всё

dict_keys(['y', 'x'])
dict_keys(['x', 'y'])
Are map1's keys and map2's keys equal: True

dict_values([1, 3])
dict_values([1, 3])
Are map1's values and map2's values equal: False
Are SORTED map1's values and map2's values equal: True
Я понимаю, что тип возвращаемого значения функцииkeys() аналогичен представлению, подобному множеству, поэтому при оценке равенства порядок не имеет значения, но как насчет значений( )? Несмотря на то, что значения в Map1 и Map2 одинаковы, возвращаемое значение по-прежнему равно False. Но почему вызов sorted() возвращает True, хотя порядок значений остается неизменным?

Подробнее здесь: https://stackoverflow.com/questions/785 ... -not-the-d

Вернуться в «Python»