哈希算法hash
哈希算法是将一个可变长度的数据映射到一个固定长度数据的算法
什么意思呢
就是无论什么一个什么样的多长多短的数据
经过哈希算法计算之后,会变成一个固定长度的数据
我们来举个例子
我们来看看python里面的hash()方法
print(hash('a'))
print(hash('aa'))
print(hash('aaa'))
print(hash('abc'))
print(hash('abcabc'))
print(hash(1))
print(hash(2))
print(hash(3))
print(hash(123))
print(hash('1'))
print(hash('2'))
print(hash('3'))
结果是
我们看到计算出来得到一个整数,长短都是一样的
但是整数,1,2,3,123,计算出来还是原来的整数
所有的python中的不可变对象是hashable的
比如number, boolean, string, tuple等等
但是
list和dictionary是不可哈希的,不能进行hash计算
dictionary和mapping
Mapping类型是可变的
有len(),,min(),,max()等方法
Dictionary是Mapping的一种
Unordered Collection无序集合
无序集合是按照hash来排列的
也就是说key全都是按照hash来排列
来看看dictionary怎么用
d = {1: 'a', 2: "b"}
print(d)
print(d[1])
print(d[2])
d = {'name': 'Eddie', 'age': 20}
print(d)
print(d['name'])
print(d['age'])
if 'name' in d:
print('yes')
else:
print('no')
if 'Eddie' in d:
print('yes')
else:
print('no')
结果是
sequence和dictionary的转换与使用
dict()
items()
keys()
values()
写点代码看看
s = [['name', 'Eddie'], ['age', 20]]
d = dict(s)
print(d)
print(d.items())
print(d.keys())
print(d.values())
print(list(d.items()))
print(list(d.keys()))
print(list(d.values()))
for item in d.items():
print(item)
print(item[0],item[1])
for key in d.keys():
print(key)
d.clear()
print(d)
结果是