zoukankan      html  css  js  c++  java
  • python里的字典和集合

    一.字典

    1.字典的定义

    字典是不可变的,是用hash值来存储的.字典的key必须是不可变的(可哈希)

    dict = {key1:value1 , key2:value2}

    2.字典的增删改查

    直接dict[newkey]="newvalue"

    dict.setdefault("key","value")

    setdefault执行流程:

    判断你的key是否存在,如果已经存在就不再新增.如果不存在,执行新增操作

    dic = {"jay":"周杰伦","jj":"林俊杰"}
    dic["j"] = "我也不知道"   #dic[newkey] = "newvalue"
    #dic.setdefault("j","我也不知道")
    print(dic)

    dict.pop("key")   指定删除key和对应的value

    dict.popitem()    从后往前删 在早期字典是无序的,所以早期是随机删除

    del dict[key]        指定删除key和对应的value

    dict.clear()           清空字典

    dic = {"张艺谋":"红高粱","李安":"断背山","陈凯歌":"霸王别姬"}
    dic.pop("张艺谋")   #指定删除
    dic.popitem()     #删除最后一个   python早期版本是无序的
    del dic["李安"]    #指定删除
    dic.clear()    #清空
    print(dic)

    dict[oldkey] = newvalue

    dict1.update(dict2)  #把dict2的内容更新到dict1中

    直接使用key就能查到value

    dict.get(key,None)  当key存在查询value,不存在返回None(None可以自定义)

    dict.setdefalut()  第一个功能是添加(当key不存在).第二个功能是查询(当key存在)

    setdefalut整个执行流程:

    判断给的key是否存在. 如果存在. 就不执行新增流程.直接查询出这个key对应的value
    如果key不存在. 先执行新增操作. 再使用key把对应的value查询出来

    dic = {"刘能":"王小利","赵四":"刘晓光","王木生":"范伟"}
    print(dic["刘能"])
    print(dic.get("王木生"))
    print(dic.get("刘能呢","没有"))
    setdefault     两个功能    添加和查找
    检查是否有key  如果没有,先添加到字典,再使用key查询value
                              如果有key,直接查询key的valu
    s = dic.setdefault("赵四四","流光")
    print(s)
    

    3.字典的嵌套

    一层一层寻找,和列表一样

    4.字典的遍历

    直接for循环

    for key in dic: # 直接循环字典拿到的是key, 有key直接拿value
         print(key)
         print(dic[key])

    dict.keys()     拿到字典的每一个key

    dict.values()    拿到字典的每一个value

    dict.items()    拿到字典的所有键值对

     for k, v in dic.items(): # 遍历字典最简单的方案
          print(item) # ('赵四', '刘晓光')
          k, v = item # 解构
          k = item[0]
          v = item[1]
          print(k, v)
    

    遍历字典的两种方法:

    dic = {"周五":"等着放假","周六":"放假","周日":"等着上课"}
    #遍历字典的两种方法
    for i in dic:
        print(i,dic[i])   # i是遍历到的key  dic[i]是对应的value
    for k,v in dic.items():  #dic.items()
                             拿到的是[('周五', '等着放假')]
                              解包
        print(k,v)

    二.set集合

    集合是无序的,不可重复的数据集合,集合里面的每个元素必须是可哈希的(不可变的数据类型),但是集合是不可哈希的,所以集合做不了字典的键

    1.set集合的用处

    用的最多的就是去重复

    lst = ["麻将", "牌九", "骰子", "扑克", "骰子", "扑克", "扑克", "扑克", ]
    print(list(set(lst)))
    

    2.set集合的增删改查

    s.add(元素)     直接添加      set是无序的

    s.update()        迭代添加

    s = {"刘嘉玲","赵本山","罗纳尔多","剑神"}
    s.add("剑圣")
    s.update("剑圣")  #迭代添加
    s.update(["剑圣"]

    s.pop()     随机删除一个

    s.remove(元素)    指定删除一个

    s.pop()   #因为set是无序的 ,所以随机删.  ()里没有arg
    s.remove("剑神")   #指定删

    只能先删除再添加

    可迭代,用for循环

  • 相关阅读:
    笔记:HttpResponse类
    既生瑜何生亮,为何有了类还要有结构?
    dotnet 文件下载后文件名乱码
    SQL SERVER临时表的使用
    笔记:SQL SERVER 2005中的同步复制技术(转)
    .net 四种错误处理机制
    DotNET 长文章分页方法
    HTML标签过滤方案
    过滤查询条件LIKE里面的关键字符
    理解HTTP消息头
  • 原文地址:https://www.cnblogs.com/q767498226/p/10046834.html
Copyright © 2011-2022 走看看