zoukankan      html  css  js  c++  java
  • 字典类型-课堂笔记整理

    字典类型

    一:基本使用
    1 用途:用来存多个值,但每一个值都有一个key与之对应,key对值有描述性的功能
    当存储多个值表示的不同的状态时,一般用字典。
    注意:字典的key值必须是可hash的,必须是不可变类型

    2 定义方式:{}内用逗号分隔开多个元素,每一个元素都是key:value的形式
    value可以是任意数据类型,但是key必须为不可变类型,key通常应该是字符串类型,数字,浮点型不具有描述性。
    d={'x':1,'y':2} #d=dict({'x':1,'y':2})
    d=dict(a=1,b=2,c=3) #{'a': 1, 'b': 2, 'c': 3} # 字典的简单创建方式
    print(d)


    dic={1:'a',0:'b',1.1:'c',(1,2,3):'d'} # 这些理论上都可以,但是通常用字符串对值进行描述
    print(dic[1])
    print(dic[0])
    print(dic[1.1])
    print(dic[(1,2,3)])
    dic={[1,2,3]:'a'} # key是字典和列表时会报错,因为字典和列表是可变的,不可hash
    dic={{'x':1}:'a'}


    3 常用操作+内置的方法
    优先掌握的操作:
    1、按key存取值:可存可取
    d={'x':1,'y':2}
    d['x']=100
    print(d)
    d['z']=3 # 字典中不存在这个key也不会报错,是添加字典键值对的一种方法。
    print(d)

    l=['a','b'] # 在列表里没有2这个索引会报错
    l[2]='c'

    2、长度len
    d={'x':1,'y':2}
    print(len(d)) # 2
    3、成员运算in和not in
    d={'x':1,'y':2}
    print('x' in d) # True 只能判断key是否在字典里。
    print(1 in d) # False

    4、删除
    d={'x':1,'y':2}
    del d['x'] # 删除键值对
    print(d)
    res=d.pop('y') # 字典里pop()里面是key值
    print(d) {"x":1} # 删除key即删除y的键值对
    print(res) # 2 # 有返回值,是key 为y对应的值。

    res=d.popitem() # 随机删除
    print(d) # {'x': 1}
    # ('y', 2) # 返回值是一个元组,里面有key,value值,逗号分开
    print(res)

    d={'a':1,'b':2,'c':3,'d':4} # 循环键(key)。
    for k in d:
    print(k)

    a
    b
    c
    d

    l=[1,2,3] # del 同样适用于字典
    del l[1]
    print(l)

    dic = {"a":"v","d":"t"}
    del dic["a"]
    print(dic)

    5、键keys(),值values(),键值对items()
    msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,
    }
    names=[]
    # for k in msg_dic: # 取出字典的键
    # names.append(k)
    # print(names)
    # values=[] # 取出字典的值
    # for k in msg_dic:
    # values.append(msg_dic[k])
    # print(values)

    # keys=msg_dic.keys() # 生成器
    # print(keys)
    # for k in keys: # 通过for循环取出所有的键
    print(k)
    l=list(keys) # 惰性序列用list转换为列表
    print(l)

    vals=msg_dic.values() # 同上,value的生成器
    print(vals)
    print(list(vals))

    print(msg_dic.items())
    print(list(msg_dic.items())) # 字典通过items直接转换成列表 *****

    6、循环
    msg_dic={
    'apple':10,
    'tesla':100000,
    'mac':3000,
    'lenovo':30000,
    'chicken':10,
    }

    for k in msg_dic:
    print(k,msg_dic[k])

    只取key
    for k in msg_dic.keys(): ****
    print(k,msg_dic[k])

    只取value
    for v in msg_dic.values(): ****
    print(v)

    取key和value
    for k,v in msg_dic.items(): #k,v=('apple', 10) *****
    print(k,v)

    需要掌握的内置方法(****)
    d={'x':1,'y':2,'z':3}
    v=d.get('xxxx') # get取值,如果key不存在会返回None,不会报错
    print(v)
    print(d['xxxxxxx']) # 直接用dic[key]取值,如果key不存在,会报错

    更新原字典
    d={'x':1,'y':2,'z':3}
    d1={'a':1,'x':1111111}
    d.update(d1) # 括号里面是要插入到元字典里的。
    print(d)
    原字典的"x"对应的值变为11111111 ,原来没有"a"这个键,直接把键值对更新到里面。
    {'x': 1111111, 'y': 2, 'z': 3, 'a': 1}

    l=['name','age','sex']
    d={}
    for k in l: # 用循环创建字典,类似fromkeys的源代码
    d[k]=None
    d=dict.fromkeys(l,None) # 创建字典的初始形态。
    print(d)


    info.setdefault
    info={'name':'egon','age':18,'sex':'male'}

    如果字典中有setdefault指定的key,那么不改该key对应的值,返回原的value
    res=info.setdefault('name','EGON_NB')
    print(info)
    print(res)

    如果字典中没有setdefault指定的key,那么增加一个key:value,返回新的value
    info.setdefault('height',1.80)
    print(info)

    info={'age':18,'sex':'male'}
    v=info.setdefault('name','浩哥')
    print(v)


    统计s = 'hello alex alex say hello sb sb'中每个单词的个数
    s = 'hello alex alex say hello sb sb'
    l = s.split()
    dic = {}
    for k in l:
    if k not in dic:
    dic[k] = 1
    else:
    dic[k] += 1
    print(dic)

    s = 'hello alex alex say hello sb sb'
    l = s.split()
    print(l)
    d = {}
    for word in l: # word= 'hello'
    if word not in d:
    d[word] = 1 # {'hello':2, 'alex':2,'say':1}
    else:
    d[word] += 1
    print(d)

    s='hello alex alex say hello sb sb'
    l=s.split()
    print(l)
    d={}

    # d={'hello':2,'alex':2}
    for word in l: #word='alex'
    d[word]=l.count(word) #d['alex']=2
    d.setdefault(word,l.count(word)) # 用setdefault,如果存在相同的key,setdefault不会再去进行计算。

    print(d)


    二:该类型总结
    1 存一个值or存多个值
    可以存多个值,值都可以是任意类型,而key必须是不可变类型,通常应该是不可变类型中字符串类型

    2 有序or无序
    无序

    3 可变or不可变

    d={'x':1,'y':2}
    print(id(d))
    d['x']=1111
    print(id(d))

  • 相关阅读:
    listview 优化
    重要博客网址
    bottombar——Fragment
    视频播放,,今日头条样式
    databinding
    Picasso
    22222222
    202004leetcode刷题记录
    批量下载邮箱中指定日期范围的附件
    有雾环境下的目标检测
  • 原文地址:https://www.cnblogs.com/Roc-Atlantis/p/9118805.html
Copyright © 2011-2022 走看看