博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Dict
阅读量:5262 次
发布时间:2019-06-14

本文共 2869 字,大约阅读时间需要 9 分钟。

字典

字典是python中唯一的映射类型,采用键值对(key-value)的形式存储数据,查询速度快。python对key进行哈希函数运算,根据计算的结果决定value的存储地址,所以字典是无序存储的,且key必须是可哈希的。

可哈希表示key必须是不可变类型,如:数字、字符串、元组。

字典(dictionary)是除列表意外python之中最灵活的内置数据结构类型。列表是有序的对象结合,字典是无序的对象集合。两者之间的区别在于:字典当中的元素是通过键来存取的,而不是通过偏移存取。

数据类型分类:

可变数据类型(不可哈希):list,dict,set。
不可变数据类型(可哈希):int,bool,str,tuple.
字典的键:不可变数据类型。
字典的值:任意数据类型。
容器类型:
  容器类(承载各种数据类型):list,tuple,dict。.
字典的键是唯一的。
字典的顺序:
  3.5之前,字典是无序的。
  3.6开始,字典创建的时候,按照一定的顺序插入的数值,看起来是有序的。

字典的方法

dic = {
"name":"jin", "age":18, "sex":"male",}# 字典的增# 第一种:有则覆盖,无则增加dic['hobby'] = 'girl'print(dic)# 第二种:有则不变,无则增加dic.setdefault('hobby') # 无value时默认为Nonedic.setdefault('hobby', 'girl')# 字典的删 dic.pop(key, None) # 有返回值,为删除的value,无则报错dic.popitem() # 随机删除,有返回值dic.clear() # 清楚字典del dic[key] # 删除字典或按key删除# 字典的改dic['name'] = 'alex'print(dic)dic2 = {
"name":"alex","weight":75}dic.updata(dic2) # 将dic2迭代添加并覆盖dic里已有的# 字典的查print(dic['name']) # 无则报错print(dic.get('name'))#无则返回None(可以自定义返回内容)
# 其他方法dic = {
"name":"jin", "age":18, "sex":"male"}print(dic.keys())dict_keys(['name', 'age', 'sex'])print(dic.values())dict_values(['jin', 18, 'male'])dic.keys()和dic.vaues()可以for循环里面的元素for i in dic = for i in dic.keys()li = list(dic.keys()) # 变成列表print(dic.items())dict_items([('name', 'jin'), ('age', 18), ('sex', 'male')])for k, v in dic.items(): print(k, v)

概念:分别赋值

a = 4

 b = 5
 a, b = b, a
 print(a,b)

字典的嵌套

dic = {
"name_list":['张三','lisi','隔壁王叔叔'], 'dic2':{
'name':'太白','age':12} } # 1 ,给列表追加一个元素:'旺旺'dic['name_list'].append('旺旺')print(dic)#,2,给列表lisi全部大写dic['name_list'][1] = dic['name_list'][1].upper()print(dic)#3,给dic2 对应的字典添加一个键值对:hobby:girldic['dic2']['hobby'] = 'girl'print(dic)

 课后作业

# 4、有字符串"k:1|k1:2|k2:3|k3:4" 处理成字典 {'k':1,'k1':2....}
s = 'k:1|k1:2|k2:3|k3:4'dic = {}s = s.split('|')for i in s:    i = i.split(':')    dic[i[0]] = i[1]print(dic)

5、元素分类

    有如下值li= [11,22,33,44,55,66,77,88,99,90],将所有大于 66 的值保存至字典的第一个key中,将小于 66 的值保存至第二个key的值中。

即: {'k1': 大于66的所有值列表, 'k2': 小于66的所有值列表}

 

li= [11,22,33,44,55,66,77,88,99,90]dic = {}dic['k1'] = []dic['k2'] = []for i in li:    if i >= 66:        dic['k1'].append(i)    else:        dic['k2'].append(i)print(dic)

 

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

    商品 li = ["手机", "电脑", '鼠标垫', '游艇']

要求:1:页面显示 序号 商品名称,如:

       1 手机

     2 电脑

       …

      2 用户输入选择的商品序号,然后打印商品名称

      3:如果用户输入的商品序号有误,则提示输入有误,并重新输入。

    4:用户输入Q或者q,退出程序。

 

li = ["手机", "电脑", '鼠标垫', '游艇']shopping_cart = []for i, name in enumerate(li, 1):    print(i, name)while True:    choice = input('请选择商品序号:').strip()    if choice.upper() == 'Q':        print('----------您已购买以下商品----------')        for k in shopping_cart:            print(k)        break    if choice.isdigit() and int(choice) <= len(li):        choice = int(choice)        shopping_cart.append(li[choice-1])        print(li[choice-1])    else:        print('您输入有误,请重新输入!')

 

转载于:https://www.cnblogs.com/hp491604738/p/8624227.html

你可能感兴趣的文章
趣谈Java变量的可见性问题
查看>>
C# 强制关闭当前程序进程(完全Kill掉不留痕迹)
查看>>
ssm框架之将数据库的数据导入导出为excel文件
查看>>
语音识别中的MFCC的提取原理和MATLAB实现
查看>>
验证组件FluentValidation的使用示例
查看>>
0320-学习进度条
查看>>
解决windows系统的oracle数据库不能启动ora-00119和ora-00130的问题
查看>>
ip相关问题解答
查看>>
MetaWeblog API Test
查看>>
反弹SHELL
查看>>
关闭Chrome浏览器的自动更新和升级提示
查看>>
移动、尺寸改变
查看>>
poj2255Tree Recovery【二叉树重构】
查看>>
tcpcopy 流量复制工具
查看>>
vue和react的区别
查看>>
第十一次作业
查看>>
负载均衡策略
查看>>
微信智能开放平台
查看>>
ArcGIS Engine 中的绘制与编辑
查看>>
Oracle--通配符、Escape转义字符、模糊查询语句
查看>>