zoukankan      html  css  js  c++  java
  • python 小兵(3)字典

    字典

    # 存储数据 字典的查找快一些
    # 不可哈希的,就是可变的数据 可变的数据不能哈希 不可变的数据能哈希

    # python3.6 版本以上 字典默认是有序的, 咱们怎么写的就怎么打印出来
    # 但是 出去和别人说的时候,字典是无序的 3.5 测试


    # 字典的键: 不可变数据类型 键不能重复,重复的话就会把值覆盖
    # 字典的值: 可以随意

    字典通过键去查找值

    dic["***"]

    #增:

    dic[11]='小米'

    dic.setdefault(11,'华为')

    1.先去字典中通过11这个键去查有没有值 就是None

    2如果是值 就不进行添加

    3.如果是None,就添加  返回的是添加的值

    #删

    del dic 删除整个字典

    del dic[1] 通过键删除

    dic.pop("25")pop方法可以更改它失败时的默认返回值

    dic.clear()

    dic.popitem()  #随机删除   python3.6删除最后一个  3.5中随机删除

    #改:

    dic1={"33":'jj','44':'tt'}

    dic2={"33":'gg',"66":"22"}

    #dic1.update(dic2)

    #更新  被更新的内容如果在要更新的内容中那值就会被覆盖

    #两个字典中,都没有一样的就是合并

    #print(dic2)

    dic2['33'] = 'tsp'字典没有叫增有的话叫改

    #查

    print(dic2[2]) #通过键查找  如果不存在就报错

    print(dic2.get(2))  #通过键查找  如果不存在就不会报错,返回None,get方法可以更改none为其他语句

    # print(dic2.setdefault('33')) # 不存在返回None

    # 其他操作:
    # for i in dic2:
    # print(i)


    # for i in dic2:
    # print(dic2.get(i))


    # for i in dic2.keys():
    # print(i)

    # for i in dic2.values():
    # print(i)

    # for i in dic2.items():
    # print(i)

    # for i in dic2:
    # print(i,dic2[i])

    # print(dic2.keys()) # 高仿列表 dict_keys(['33', '66']) 不能使用下标
    # print(dic2.values()) # 高仿列表 dict_values(['gg', 'pp']) 不能使用下标

    # 解构
    有对应值都可以解构
    # a,b,c = 1,2,3 # 1,2,3 True,False,True '456' [7,8,9] (7,8,9) {'1':8,'2':9,'3':0}
    # print(a)
    # print(b)
    # print(c)

    # 面试题:

    # a = 10
    # b = 20
    # a,b = b,a # 10000%
    # print(b) # 10
    # print(a) # 20

    # for k,v in dic2.items(): # k,v = ('33','gg')
    # print(k)
    # print(v)

    # keys() # 获取所有的键 高仿列表
    #
    # values() # 获取所有的值 高仿列表
    #
    # item() # 获取键值 以元祖的形式显示

    # print(dic2.keys())   # 高仿列表 dict_keys(['33', '66'])  不能使用下标
    # print(dic2.values()) # 高仿列表 dict_values(['gg', 'pp']) 不能使用下标

    ###############################这是坑##############################################

    这个方法可以快速创建一个字典
    # dic3 = dict.fromkeys([1,2,3,4,5,6,7,8,9,0],[1,2,3])
    # #第一个参数是键 要是可迭代的对象
    # #第二个参数是值, 值是无所谓 是因为创建的新字典的值用的都是一个 值是一个可变数据类型(可变数据类型大家指向的是同一个地址)
    # print(dic3)
    # dic3[3].append(9)
    # print(dic3)

    ##################################################################################

     字典的嵌套:

    # dic = {'汪峰':{'光头强':'电锯',
    # '葛慧倩':'熊大',
    # '国际章':'熊二'},
    # '陈冠希':{'张柏芝':'喜剧之王',
    # '阿娇':'千机变'},
    # '韦小宝':{'建宁':'公主',
    # '龙儿':'教主夫人',
    # '双儿':{'大双':'榴莲','小双':'椰子'},
    # '阿珂':'刺客'}}
    # dic1 = dic['陈冠希']['阿娇']
    # print(dic1)
    # print(dic['韦小宝']['双儿'])
    # print(dic['韦小宝']['双儿']['小双'])

    # 集合:

    # set 集合 存储数据 天然去重 无序 不能是用下标(集合只要用处去除列表重复值)
    # se = {1,2,3,4,52,234,12,21,12,123,1,11,2,3,1,2,3,21} # 列表有点 没有值得字典
    # print(se)

    # 面试题

    # lst = [1,2,3,4,12,3,4]
    # print(list(set(lst)))

    # for i in {1,2,3,4}:
    # # print(i)



    # se.add(6)
    # # #
    # # # print(se)
    # # #
    # # # se.update([1,23,34]) # 可迭代对象
    # # # print(se)


    # se.clear()
    # se = {1,2,3,4}
    # print(se.pop())
    #
    # se.remove(4) # 通过内容删除
    # print(se)

    # s1 = {"刘能", "赵四", "皮歌藏"}
    # s2 = {"刘科长", "冯乡长", "皮歌藏"}

    # print(s1 & s2) # 俩个都有的
    # print(s1 | s2) # 两个合并
    # print(s1 - s2) # 不显示共有的
    # print(s1 ^ s2) # 显示不共有的

    # print(s1 < s2)
    # print(s1 > s2)

    # dic = {{1,2}:'你好'}
    # print(dic)

    冻结的集合可以当key值
    # s1 = frozenset(['冯乡长', '刘能', '赵四', '刘科长'])
    # print(s1)
    #
    # dic = {s1:'你好'}
    # print(dic)


    # print(dic.fromkeys('1','nihao'))


    # dic = {}
    # # dic.setdefault('123','nihao')
    # # print(dic)

    一道我认为做法很巧妙的题

    输出{"上海":1.......}

    cars = ['鲁A32444','鲁B12333','京B8989M','黑C49678',
    '黑C46555','沪B25041']
    locals = {'沪':'上海','黑':'黑龙江','鲁':'山东',
    '鄂':'湖北'}

    dic = {}
    for em in cars:
    if em[0] in locals:
    dic[locals[em[0]]] = dic.get(locals[em[0]],0) + 1#我第一次取的时候dic字典是空的无法取到值返回的是零,第二次的时候重复就取到了输出他的key进行+1
    print(dic)

    本题巧妙的使用了get这个方法对新的字典进行操作完成了巧妙的完成了自加操作

  • 相关阅读:
    C#事件理解
    二叉排序树查找算法代码
    二叉排序树查找算法代码
    深度学习——02、深度学习入门——卷积神经网络
    深度学习——02、深度学习入门——卷积神经网络
    程序员表白代码
    程序员表白代码
    程序员表白代码
    vbs实现消息轰炸
    vbs实现消息轰炸
  • 原文地址:https://www.cnblogs.com/huhuxixi/p/10213163.html
Copyright © 2011-2022 走看看