zoukankan      html  css  js  c++  java
  • python学习:字典

    字典

    1.查询内存地址

    a = 10

    print(id(a))

    b = a

    print(id(b))

    b = 15

    print(id(b))

    2. 数据类型

    不可变类型:整型、字符串、元组

    可变类型:列表、字典

    字典的值可以是任意类型,键只能是不可变类型。

    字典存储是无序的。例如:

    dic = {'name':'ysw','age':36,'hobby':'game','is_handsome':True}

    print(dic)

    print(dic['name'])

    #dic = {1:'ysw','age':36,'hobby':'game','is_handsome':True}

    #print(dic)

    #print(dic[1])          #键改为整型没有问题

    #dic = {[1,2]:'ysw','age':36,'hobby':'game','is_handsome':True}

    #print(dic)

    #print(dic[[1,2]])         #键改为列表出现问题

    #dic = {'name':'ysw','age':36,'hobby':{'game_name':'wow','level':'20'},'is_handsome':True}

    #print(dic['hobby'])

    #dic = {{'1':'123'},'age':36,'hobby':{'game_name':'wow','level':'20'},'is_handsome':True}

    #print(dic)

    #字典两大特点:无序;键唯一

    #dic = {'age':'ysw','age':36,'hobby':'game','is_handsome':True}

    #print(dic)

    3.字典的两种创建方式:

    #dic1 = {'name':'ysw'}

    #dic2 = dict((('name','ysw'),))

     4.对应操作

      (1)增

    dic1 = {'name':'ysw'}

    dic1['age'] = 18

    print(dic1)

    dic1['name'] = 18

    print(dic1)

    #没有重复的键就添加,有重复的键就替换数值

    ------------------------------

    dic1 = {'name':'ysw'}

    dic1['age'] = 18

    print(dic1)

    dic1.setdefault('age',36)

    print(dic1)

    #dic1.setdefault('hobby','game')

    #print(dic1)

    #setdefault的特点:没有重复的键就添加,并返回添加键的值;有重复的键就没有变化,并返回字典中重复键的值。

    #ret = dic1.setdefault('age',36)

    #print(ret)

    #ret2 = dic1.setdefault('hobby','game')

    #print(dic1)

    #print(ret2)

       (2)查

    利用键名来查找键的值

    dic3 = {'name':'ysw','age':36,'hobby':'game','is_handsome':True}

    print(dic3['name'])

    print(dic3.keys())  #查找字典中所有的键名,结果并不是列表类型,可以通过list命令转换为列表

    print(list(dic3.keys()))

    print(dic3.values())  #查看字典中所有键对应的值,结果并不是列表类型,可以通过list命令转换为列表

    print(list(dic3.values()))

    print(dic3.items())  #查看字典中所有键值对 ,结果并不是列表类型,可以通过list命令转换为列表

    print(list(dic3.items()))

      (3)改

    dic1 = {'name':'ysw'}

    dic1['name'] = 18

    print(dic1)

    -------------------------------------------------------

    dic4 = {'name':'ysw','age':36,'hobby':'game','is_handsome':True}

    dic5 = {'1':'111','2':'222','age':'35'}

    dic4.update(dic5)  #dic5与dic4没有重复的将dic5添加到dic4,有重复的就更新键值对;dic5保持不变。

    print(dic4)

    print(dic5)

    #删:
    # dic = {'name':'ysw','age':36,'hobby':'game','is_handsome':True}
    # del dic['name'] #del 删除指定键值对
    # print(dic)

    #dic = {'name':'ysw','age':36,'hobby':'game','is_handsome':True}
    # dic.clear() #clear清空字典
    # print(dic)

    # ret = dic.pop('age') #pop删除指定键值对,并返回删除的键值对的值
    # print(ret)
    # print(dic)

    # a = dic.popitem() #popitem随机删除一组键值对,并以元组方式返回值
    # print(a,dic)

    # del dic #删除整个字典,内存中不再有该字典
    # print(dic)

    #其他操作以及涉及到的方法:
    # dic6 = dict.fromkeys(['host1','host2','host3'],'test')
    # print(dic6)

    #字典嵌套
    # av_catalog = {
    # "欧美":{
    # "www.youporn.com": ["很多免费的,世界最大的","质量一般"],
    # "www.pornhub.com": ["很多免费的,也很大","质量比yourporn高点"],
    # "letmedothistoyou.com": ["多是自拍,高质量图片很多","资源不多,更新慢"],
    # "x-art.com":["质量很高,真的很高","全部收费,屌比请绕过"]
    # },
    # "日韩":{
    # "tokyo-hot":["质量怎样不清楚,个人已经不喜欢日韩范了","听说是收费的"]
    # },
    # "大陆":{
    # "1024":["全部免费,真好,好人一生平安","服务器在国外,慢"]
    # }
    # }
    # #
    # # av_catalog["大陆"]["1024"][1] += ",可以用爬虫爬下来"
    # # print(av_catalog["大陆"]["1024"])
    # # #ouput
    # # ['全部免费,真好,好人一生平安', '服务器在国外,慢,可以用爬虫爬下来']
    # av_catalog['欧美']['www.youporn.com'][1] = '高清无码'
    # print(av_catalog)
    #字典排序 根据键的值进行排列
    # dic = {5:'555',2:'666',4:'444'}
    # print(sorted(dic))
    # print(sorted(dic.values()))
    # print(sorted(dic.items()))

    #字典的遍历
    # dic5 = {'name':'ysw','age':36}
    # for i in dic5:
    # print(i)
    # print(i,dic5[i]) #推荐这一种方法,效率高
    # for i in dic5.items():
    # print(i)
    # for i,v in dic5.items():
    # print(i,v)
  • 相关阅读:
    LeetCode 842. Split Array into Fibonacci Sequence
    LeetCode 1087. Brace Expansion
    LeetCode 1219. Path with Maximum Gold
    LeetCode 1079. Letter Tile Possibilities
    LeetCode 1049. Last Stone Weight II
    LeetCode 1046. Last Stone Weight
    LeetCode 1139. Largest 1-Bordered Square
    LeetCode 764. Largest Plus Sign
    LeetCode 1105. Filling Bookcase Shelves
    LeetCode 1027. Longest Arithmetic Sequence
  • 原文地址:https://www.cnblogs.com/pl-2018/p/9500850.html
Copyright © 2011-2022 走看看