zoukankan      html  css  js  c++  java
  • Python哈希表的例子:dict、set

    dict(字典)

    Python内置了字典:dict的支持,dict全称dictionary,在其他语言中也称为map,使用键-值(key-value)存储,具有极快的查找速度。

    和list比较,dict有以下几个特点:

    1. 查找和插入的速度极快,不会随着key的增加而变慢;
    2. 需要占用大量的内存,内存浪费多。

    而list相反:

    1. 查找和插入的时间随着元素的增加而增加;
    2. 占用空间小,浪费内存很少。

    所以,dict是用空间来换取时间的一种方法。

    dict可以用在需要高速查找的很多地方,在Python代码中几乎无处不在,正确使用dict非常重要,需要牢记的第一条就是dict的key必须是不可变对象

    这是因为dict根据key来计算value的存储位置,如果每次计算相同的key得出的结果不同,那dict内部就完全混乱了。这个通过key计算位置的算法称为哈希算法(Hash)。

    要保证hash的正确性,作为key的对象就不能变。在Python中,字符串、整数等都是不可变的,因此,可以放心地作为key。而list是可变的,就不能作为key:

    >>> key = [1, 2, 3]
    >>> d[key] = 'a list'
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
    TypeError: unhashable type: 'list'
    '''
    dictionary:包含<key, value> 
    基本操作
    '''
    my_dict = {'name':'kumata','age':20,'location':'zhuhai'}
    
    #输出键值
    print(my_dict['name']) 
    
    #增加键对值
    my_dict['sex'] = 'man'
    print(my_dict)
    
    #修改字典中的值
    my_dict['age'] = 21
    print(my_dict)
    
    #删除键值对
    del my_dict['sex']
    print(my_dict)
    
    #遍历字典
    for key,value in my_dict.items():
        print(key ,':',value)
    
    #清除字典
    my_dict.clear()
    print(my_dict)

    set(集合)

    set和dict类似,也是一组key的集合,但不存储value。由于key不能重复,所以,在set中,没有重复的key。

    '''
    set和dict类似,也是一组key的集合,但不存储value。
    由于key不能重复,所以,在set中,没有重复的key。
    要创建一个set,需要提供一个list作为输入集合:
    '''
    s1 = set([1,2,3,4,5])
    print(s1) #{1, 2, 3, 4, 5}
    
    #重复元素在set中自动被过滤
    s2 = set([1,1,2,3,3,4])
    print(s2) #{1, 2, 3, 4}
    
    #add(key)添加元素
    s1.add(6)
    print(s1) #{1, 2, 3, 4, 5, 6}
    s1.add(1)
    print(s1) #{1, 2, 3, 4, 5, 6}
    
    #remove(key)删除元素
    s1.remove(6)
    print(s1) #{1, 2, 3, 4, 5}
  • 相关阅读:
    jvisualm 结合 visualGC 进行jvm监控,并分析垃圾回收
    linux 查看服务器cpu 与内存配置
    arthas 使用总结
    selinux contexts 安全上下文的临时更改
    Android 8.1 Doze模式分析(五) Doze白名单及Debug方式
    Window 任意窗口置顶软件Window TopMost Control
    Android ApkToolPlus一个可视化的跨平台 apk 分析工具
    SVN Please execute the 'Cleanup' command.
    Android 如何在64位安卓系统中使用32位SO库
    Android cmd命令查看apk是32位还是64位?
  • 原文地址:https://www.cnblogs.com/kumata/p/9157875.html
Copyright © 2011-2022 走看看