zoukankan      html  css  js  c++  java
  • 基本数据类型----dict

    1,什么是字典dict

    字典的简单介绍:

      字典(dict)是python里面唯一的一个映射类型.他是以{}括键值对组成,在dict中key是唯一的,在保存的时候根据key来计算一个内存地址,然后key-value保存在这个地址中,这种算法被称为hash算法,所以切记字典中key必须是可hash的,如果你搞不明白可哈希,暂时可以这样记,可以改变的都是不可哈希的,那么哈希就意味着不可变的,这个是为了能准确的计算内存地址而规定的

      已知可哈希的(不可变)的数据类型:int,str,tuple,bool

      不可哈希(可变)的数据类型:list,dict,set

    语法:{key :value1,key2:value2}

    注意:key必须是哈希的,value没有要求,可以保持任意类型的数据

    dic保存的数据不是按照我们添加进去的顺序保存的,是按照hash表的顺序保存的,而hash表不是连续的,所以不能进行切边工作,他只能通过key来获取dict中的数据

    2,字典的增删改查和其他操作

    1.增

    dic = {}
    dic['name'] = '赵瑞鑫'#如果dict中没有出现key,就会新增加一个key-value的组合dict
    dic.setdefault('六六六') #也可以往里面设置值
    dic.setdefaul('六六六',666)  #如果dict已经存在,那么setdefaul将不会起到添加的作用
    字典增加

    2.删

    dic.pop(key)#输入key值删除相应的值
    print(dic)
    
    del dic[key] #操作方法同上
    print(dic)
    
    dic.popitem()#在2之前是随机删除,3默认删除最后一个
    
    dic.clear()  #清空字典中所有的内容
    字典删除

    3.改

    dic[key] = 新value
    
    dic.update(dic_1要更新的新列表) #把dic_1更新的到dic中,如果key重名,则修改替换,如果不存在key,则新增.
    字典的修改

    4.查

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

    1.print(dic['name'])
    #如果没有的话会报错的
    2.dic,get('ok')#如果没又找到的话可以返回NONE值,或者你也可以在后面加个返回值
    dic.get('ok','对不起没有找到哦~')
    字典的查

    5.其他操作

    dic = {'id':123,'name':'sylar',''age'':30,"like":"科比"}
    #不管它是什么,当list来用就行
    for key in dic.keys():
        print(key)
    取到key值,要是取得value的话
        print(dic[key])
    
    通过键值对拿到k和v
    for k,v in dic.item() :
        print(k)
        print(v)        
    字典的其他操作

    3,字典的嵌套

    用一个最最简单的购物车来表达

    输出商品列表,用户输入序号,显示用户选中的商品

    goods = [{"name": "电脑", "price": 1999},
    {"name": "鼠标", "price": 10},
    {"name": "游艇", "price": 20},
    {"name": "美女", "price": 998}, ]
    '''
    要求:
    1:页面显示 序号 + 商品名称 + 商品价格,如:
    1 电脑 1999
    2 鼠标 10

    2:用户输入选择的商品序号,然后打印商品名称及商品价格
    3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。
    4:用户输入Q或者q,退出程序。
    '''
    shopping_car=[]
    for i in range(len(goods)):
        print("编号",i+1,":",goods[i]["name"],goods[i]["price"])
    while 1:
        choice = input("请输入你想要购买的商品序号:")
        if choice.upper()=="Q":
            break
        else:
            if choice.isdigit():
                if int(choice) > 0 and int(choice) < len(goods) + 1:
                    print(goods[int(choice) - 1]["name"], goods[int(choice) - 1]["price"])
                    shopping_car.append(int(choice))
                    print("你已经购买了以下商品")
    
                    for i in range(len(shopping_car)):
                        print(goods[shopping_car[i] - 1]["name"], goods[shopping_car[i] - 1]["price"])
                else:
                     print('你输入的是非法字符')
            else:
                print('你输入的是非法字符,请重新输入')

    五, 其他操作:

    len() 计算键值对的个数

    字典在迭代的时候不可以改变大小
    把要删除的key保存在列表中. 循环列表. 删除字典

    dict.fromkeys(key, value)
    1. 返回给你新列表.
    2. 所有的key公用同一个value

    推导式: {key: value for循环 if}


  • 相关阅读:
    NSArray的几个方法的简单使用
    内存管理常用知识点总结
    iOS是开发之 对数组中的元素排序后输出
    iOS开发之——单例的几种设计方式
    图论二:图的存储
    图论一:基本概念
    树状数组(hdu-4325,hdu-1166,pat-1057)
    pat1079+1086+1090+1094(树的遍历)感想
    pat 甲级 1086(树的遍历||建树)
    static关键字的功能
  • 原文地址:https://www.cnblogs.com/zhaodingding/p/9620086.html
Copyright © 2011-2022 走看看