基本数据类型----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}


posted @ 2018-09-10 15:38  赵瑞鑫  阅读(357)  评论(0编辑  收藏  举报