Ваш hashTable
объект выглядит как итерация пар ключ-значение.
Во-первых, не то, что ваши четыре строки кода:
tempList=[]
for item in hashTable:
if item!=None:
tempList.append(item[1])
... эквивалентны единицеПонимание:1013 * call:
maxNum = max(item[1] for item in hashTable if item is not None)
В качестве примечания, обратите внимание, что я использовал item is not None
вместо item != None
.Вы почти никогда хотите сравнить с None
с ==
или !=
.Эмпирическое правило:
- Если вы хотите получить любое истинное значение, используйте
if item
. - Если вы хотите любое значение, отличное от
None
, используйте if item is not None
. - Если вам нужно любое значение, отличное от
None
, в то же время, позволяя другим классам переопределять __eq__
и сравнивать как равное None
, используйте if item != None
.
Тем не менее, стоит отметить, что если вы хотите создать собственную хэш-таблицу, вы, вероятно, захотите, чтобы она действовала как диктовка или, по крайней мере, как Mapping
.Реализация интерфейса Mapping
очень проста, и это означает, что ваш объект может быть утилитарным, как dict.
И, если вы сделаете это, вы можете использовать тот же код, который вы использовали бы с dict:
maxNum = max(hashTable.values())