算法笔记:哈希表、映射和集合( 二 )

pop方法:
>>> mydict = {1:"apple",2:"banana"}>>> mydict.pop(2)'banana'>>> mydict{1: 'apple'}>>>popitem()用于随机删除任意键值对
清除字典元素>>> mydict = {1:"apple",2:"banana"}>>> mydict.clear()>>> mydict{}合并字典>>> mydict1 = {1:"apple",2:"banana"}>>> mydict2 = {3:"orange"}>>> mydict1.update(mydict2)>>> mydict1{1: 'apple', 2: 'banana', 3: 'orange'}>>> # 或者>>> {**mydict1,**mydict2}{1: 'apple', 2: 'banana', 3: 'orange'}获取字典key , value值>>> mydict = {1:"apple",2:"banana"}>>> mydict.keys()dict_keys([1, 2])>>> >>> mydict.values()dict_values(['apple', 'banana'])items()方法返回(key, value)对:
>>> mydict = {1:"apple",2:"banana"}>>> mydict.items()dict_items([(1, 'apple'), (2, 'banana')])mydict = {1:"apple",2:"banana"}for key,value in mydict.items(): print(key) print(value)python2中 , has_key()可用于判断字典是否存在某个key:
>>> mydict = {1:"apple",2:"banana"}>>> mydict.has_key(1)python3删除了has_key()方法 , 可以使用 in 操作符来判断:
mydict = {1:"apple",2:"banana"}if 1 in mydict: print(mydict(1))# 或者if 1 in mydict.keys(): print(mydict(1))字典排序实际应用中 , 通常需要对字典进行排序 , 一般会根据键或值 , 进行升序或降序排序:
根据字典键升序排序
>>> mydict = {1:"apple",3:"banana",2:"orange"}>>> sorted(mydict.items(), key=lambda x: x[0])[(1, 'apple'), (2, 'orange'), (3, 'banana')]根据字典值降序排序
>>> sorted(mydict.items(), key=lambda x: x[0], reverse=True)[(3, 'banana'), (2, 'orange'), (1, 'apple')]>>>判断一个字典是否包含另一个字典判断mydictA是否包含mydictB
>>> mydictA = {1:"apple",3:"banana",2:"orange"}>>> mydictB = {1:"apple"}>>> dict(mydictB, **mydictA) == mydictATrue映射-Map映射和哈希表类似 , 也是存储key-value对 , 通过键(Key)查找值(Value) 。
JAVA 的HashMap() 和TreeMap()

  • map.set(key, value)
  • map.get(key)
  • map.has(key)
  • map.size()
  • map.clear()
python 映射函数下面介绍一下python的map()函数用法:
map() 根据提供的函数对指定序列进行映射 , 返回映射函数返回值的新列表 。一般结合lambda匿名函数一起使用:
>>> map(lambda x: x ** 2, [1, 2, 3, 4, 5])[1, 4, 9, 16, 25]两个list相加:
>>> list1 = [1, 2, 3]>>> list2 = [4, 5, 6]>>> map(lambda x, y: x + y, list1, list2)[5, 7, 9]集合-Set与列表(list)类似 , 但集合set没有重复元素 , 集合没有键和值的配对 , 是一系列无序的、唯一的元素组合 。
字典和集合的内部结构都是一张哈希表 , 字典存储了哈希值(hash)、键和值这 3 个元素 , 而集合的哈希表内没有键和值的配对 , 只有单一的元素 。和列表不一样 , 集合不支持索引操作 。
java 的HashSet()和TreeSet()
  • set.add(value)
  • set.delete(value)
  • set.hash(value)
python集合可以使用{ }创建集合:
>>> setA = {'apple', 'banana'}# 或者 setA = set(["apple", "banana"])>>> setB = {'apple', 'banana', 'orange'}并集>>> setA.union(setB)set(['orange', 'apple', 'banana'])>>> setA | setBset(['orange', 'apple', 'banana'])交集>>> setA.intersection(setB)set(['apple', 'banana'])>>> setA & setBset(['apple', 'banana'])>>> >>> setB.intersection_update(setA)>>> setB{'banana', 'apple'}isdisjoint() 方法可用于判断两个集合是否包含相同的元素 , 如果没有返回 True 。
差集


推荐阅读