zoukankan      html  css  js  c++  java
  • python3 字典dict

    '''
    字典(dict)是python中唯一的一个映射类型。
    它是以{}括起来的键值对组成,在dict中key是唯一的,在保存的时候,根据key来计算出一个内存地址。然后将key-value保存在这个
    地址中。这种算法被称为hash算法。在dict中存储的key-value中的key必须是可hash的,可哈希意味着不可变。
    
    已知的可哈希(不可变)的数据类型:int, str, bool, tuple
    不可哈希(可变)的数据类型:list, dict, set
    
    语法:
        {key1:value1, key2:value2...}
    
    注意:key必须是不可变(可哈希)的,value没有要求,可以保存任意类型的数据。
    合法字典
    '''
    dic = {123: 456, True: 999, "id": 1, ("a", "b", "c"): "aaa"}
    print(dic[123])  # 456
    print(dic[True])  # 999
    print(dic["id"])  # 1
    print(dic[("a", "b", "c")])  # aaa
    
    '''
    不合法
    '''
    # dic = {[1, 2, 3]: "abc"}  # list是可变的,不能作为key  TypeError: unhashable type: 'list'
    # dic = {{1: 2}: "apple"}  # dict是可变的,不能作为key  TypeError: unhashable type: 'dict'
    # dic = {{1, 2, 3}: "orange"}  # set是可变的,不能作为key  TypeError: unhashable type: 'set'
    
    '''
    dict保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切片。
    它只能通过key获取dict中的数据。
    '''
    
    '''
    1、字典添加元素
    '''
    dic = {}
    dic['name'] = "lily"  # 如果dict中没有出现这个key,就会新增一个key-value的组合进dict
    dic['age'] = 18
    print(dic)  # {'name': 'lily', 'age': 18}
    
    '''
    如果dict中没有出现过这个key-value,可以通过setdefault设置默认值。
    如果dict中已经存在了,那么setdefault将不会起作用。
    '''
    dic.setdefault("salary")  # 也可以往里面设置值
    print(dic)  # {'name': 'lily', 'age': 18, 'salary': None}
    dic["salary"] = 10000
    print(dic)  # {'name': 'lily', 'age': 18, 'salary': 10000}
    dic.setdefault("salary", 12000)
    print(dic)  # {'name': 'lily', 'age': 18, 'salary': 10000}
    
    '''
    2、字典删除元素
    pop(key)
    del dic[key]
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    print(dic)  # {'a': 'apple', 'b': 'banana', 'o': 'orange'}
    ret = dic.pop("b")
    print(ret)  # banana
    print(dic)  # {'a': 'apple', 'o': 'orange'}
    
    del dic["o"]
    print(dic)  # {'a': 'apple'}
    
    '''
    随机删除
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    ret = dic.popitem()
    print(ret)  # ('o', 'orange')
    print(dic)  # {'a': 'apple', 'b': 'banana'}
    
    '''
    清空字典中的所有内容
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    dic.clear()
    print(dic)  # {}
    
    '''
    3、修改字典中的元素
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    dic2 = {"s": "strawberry", "w": "watermelon", "b": "banana"}
    dic.update(dic2)
    print(dic)  # {'a': 'apple', 'b': 'banana', 'o': 'orange', 's': 'strawberry', 'w': 'watermelon'}
    print(dic2)  # {'s': 'strawberry', 'w': 'watermelon', 'b': 'banana'}
    dic2["s"] = "草莓"
    print(dic2)  # {'s': '草莓', 'w': 'watermelon', 'b': 'banana'}
    
    '''
    4、查询
    dic[key] 没有会报错
    dic.get(key) 没有不会报错
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    print(dic["a"])  # apple
    print(dic.get("b"))  # banana
    print(dic.get("c"))  # None
    print(dic.get("w", "watermelon"))  # watermelon
    
    '''
    5、keys()
    values()
    items()
    '''
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    print(dic.keys())  # dict_keys(['a', 'b', 'o'])
    for k in dic.keys():
        print(k)
    '''
    打印结果:
    a
    b
    o
    '''
    
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    for k in dic:
        print(k)
    '''
    打印结果:
    a
    b
    o
    '''
    
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    print(dic.values())  # dict_values(['apple', 'banana', 'orange'])
    for v in dic.values():
        print(v)
    '''
    打印结果:
    apple
    banana
    orange
    '''
    
    dic = {"a": "apple", "b": "banana", "o": "orange"}
    print(dic.items())  # dict_items([('a', 'apple'), ('b', 'banana'), ('o', 'orange')])
    for k, v in dic.items():
        print(k, v)
    '''
    打印结果:
    a apple
    b banana
    o orange
    '''
    
    '''
    items()比较常用,keys()和values()相对比较用的少。
    '''
    
    '''
    解构:解构的时候注意数量必须匹配
    '''
    a, b = 1, 2
    print(a, b)  # 1 2
    
    (c, d) = 3, 4
    print(c, d)  # 3 4
    
    # e, f = [1, 2, 3]  # 报错:ValueError: too many values to unpack (expected 2)
    # print(e, f)
  • 相关阅读:
    vue使用elementui合并table
    使用layui框架导出table表为excel
    vue使用elementui框架,导出table表格为excel格式
    前台传数据给后台的几种方式
    uni.app图片同比例缩放
    我的博客
    【C语言】取16进制的每一位
    SharePoint Solution 是如何部署的呢 ???
    无效的数据被用来用作更新列表项 Invalid data has been used to update the list item. The field you are trying to update may be read only.
    SharePoint 判断用户在文件夹上是否有权限的方法
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/11857873.html
Copyright © 2011-2022 走看看