• dict--字典


    dict 字典

    {}表示,每次保存两个数据,key:value,键值对

    根据key来计算出一个内存地址,然后将key-value保存在这个地址中,这种算法被称为哈希算法(hush),而hash表是不连续的,因此不能切片,也决定了按照内部的哈希表保存的key-value值是无序的

    在dict中存储的key-value中的key都是可哈希的,即不可变的数据类型:
    int,str,tuple,bool

    通过前边的参数去找后边的类型,后边可以存储任何的数据类型

    语法:
    dict = {key1:value1,key2:value2,...}

    dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
    print(dic)
    print(dic)
    print(dic[3])
    print(dic[Ture])
    print(dic['linga'])
    print(dic[(1,2)])
    #使用bool时要注意Ture对应的值为1
    

    1、新增:

    语法:
    dict[key] = value dict.set
    dict.setdefault(key,value)

    如果dict中没有出现过这个key-value。可以通过setdefault设置默认,如果dict中已经存在了。那么setdefault将不会起作用

    如果key存在,执行的是修改操作,反之执行的是新增

    dic = {}
    dic['jay'] = '周杰伦'
    dic[1] = '马纳多纳'
    print(dic)
    dic.setdefault('LOL')
    print(dic)
    dic.setdefault('LOL','Master')
    print(dic)
    

    2、删除

    pop,del,clear,popitem
    用法和列表的一样
    需要注意的是popitem是随机删除

    语法:
    dict.pop(key)
    dict.clear(key)
    del dict(key)
    dict.popitem()

    dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
    dic.pop(3)
    dic.pop()
    dic.popitem()
    print(dic)
    del dic('allen')
    print(dic)
    dic.clear()
    print(dic)
    

    3、修改

    和列表一样

    dic = {"id": 123, "name": 'sylar', "age": 18}
    dic1 = {"id": 456, "name": "麻花藤", "ok": "wtf"}
    dic.update(dic1)    
    # 把dic1中的内容更新到dic中. 如果key重名. 则修改替换. 如果不存在key, 则新增. 
    print(dic)
    print(dic1)
    
    

    4、查询

    查询一般用key来查找具体的数据

    语法:
    dict[key]
    dict.get(key)

    使用dict[key]需注意如果key不存在会报错,而使用dict.get(key),key不存在是会返回None

    dic = {3:110,2:'allen',(1,2):'Hello','linga':['miss','Saya'],Ture:{55:66}}
    print(dic[3])
    print(dic.get(Ture))
    print(dic.get(111))
    print(dic[121])
    

    5、其他相关操作

    1 for循环:

    语法:
    for key in dict.keys():
    for value in dict.values():
    for key,value in dict.items()

    需注意的是,keys(),values(),items()相当于字典中key,value,和key:value的列表。

    for key,value in dict.items()中: key,value使用了解构,使用结构要注意结构的元素和承接的变量个数要匹配

    dic = {1:'马拉多纳',2:'外星人',3:'小罗',4:'内马尔'}
    for key in dic.keys():
    ptint(key)
    for value in dic.values():
    print(value)
    for key,value in dic.items():
    print(key,value)
    
    li = [2,3,4,5]
    a,b,c,d = li
    print(a,b,c,d)
    

    6、字典的嵌套

    有降维的意思,便于识读和操作
    用法跟列表的一样

    wangfeng = {
        'name':'汪峰',
        'age':46,
        'wife':{
            'name':'章子怡',
            'age':43
        },
        'children':[
            {'name':'小叮当','age':10},
            {'name':'大叮当','age':16}
        ]
    }
     #汪峰的第二个儿子的年龄
    print(wangfeng.get("children")[1].get("age"))
    print(wangfeng.get("wife").get("name"))
    print(wangfeng.get("name"))
    
    #我不是有意调戏峰哥的
    
    dic = {
        'name':['alex',2,3,5],
        'job':'teacher',
        'oldboy':{'alex':['python1','python2',100]}
    }
    # 1,将name对应的列表追加一个元素’wusir’。
    dic['name'].append("wusir")
    print(dic)
    # 2,将name对应的列表中的alex首字母大写。
    dic['name'][0] = dic['name'][0].capitalize()
    print(dic)
    # 3,oldboy对应的字典加一个键值对’老男孩’,’linux’。
    dic['oldboy']['老男孩'] = 'linux'
    print(dic)
    # 4,将oldboy对应的字典中的alex对应的列表中的python2删除。
    dic["oldboy"]['alex'].remove('python2')
    print(dic)
    
  • 相关阅读:
    python之enumerate
    Python中的集合set
    SGU 分类
    太空飞行计划 最大权闭合图
    1.飞行员配对 二分图匹配(输出方案)/最大流斩
    poj1149最大流经典构图神题
    hdu1569 方格取数 求最大点权独立集
    最大独立集 最小点覆盖 最小边覆盖 最小路径覆盖 最大团
    hdu3491最小割转最大流+拆点
    hdu3987,最小割时求最少割边数
  • 原文地址:https://www.cnblogs.com/linga/p/9140754.html
Copyright © 2020-2023  润新知